Контакты

Достижения

Все достижения (1)

Наибольший вклад в теги

Все теги (22)

Лучшие ответы пользователя

Все ответы (24)
  • Стоит ли использовать здесь перечисления?

    Collin
    @Collin
    Стоит, так будет удобнее и понятнее.
    namespace TryEnum
    {
        enum DownloadType
        {
            Video, Audio, Custom, Unknown, Default
        }
        enum ForceIpProtocol
        {
            IPv4, IPv6
        }
        enum ProxyProtocol
        {
            HTTPS, HTTP, SOCKS4, SOCKS5
        }
    }


    А использовать вот так:
    5ed7670d68591771166057.png

    А по поводу интерфейсов... Интерфейсы не должны быть вместо классов; класс реализует интерфейс (выглядит синтаксис как наследование class ClassName : IClassName, но это не совсем наследование, там немножко другая реализация). И интерфейс нужен в том случае, если нужно реализовать полиморфизм в коде и/или что бы упростить доступ к публичным полям в классах, которые реализуют этот интерфейс.
    Например: у нас есть много классов с разными реализациями, но их всех объединяют одни и те же свойства (к приеру свойства public string Name ( get; set; ); public int Age( get; set; ); и тд...). Интерфейс в данном случае нужен для того, что бы через него мы получали доступ ко множественному поведению, при помощи разных классов, содержащих одноименные свойства, не плодя при этом код.

    Для наглядности:

    у нас есть метод Create(); в котором мы хотим создавать новых людей

    static void Create()
            {
                // empty...
            }


    Есть разные классы, которые создают Human и реализуют интерфейс IHuman

    class SimpleHuman : IHuman
        {
            public string Name { get; set; }
            public int Age { get; set; }
            public SimpleHuman()
            {
                Name = "Generic human...";
                Age = 20;
            }
            public SimpleHuman(string name) : this()
            {
                Name = name;
            }
            public SimpleHuman(string name, int age) : this()
            {
                Name = name;
                Age = age;
            }
        }


    class CoolHuman : IHuman
        {
            public string Name { get; set; }
            public int Age { get; set; }
            public CoolHuman()
            {
                Name = "BOB!";
                Age = 20;
            }
            public CoolHuman(string name) : this()
            {
                Name = name;
            }
            public CoolHuman(string name, int age) : this()
            {
                Name = name;
                Age = age;
            }
        }


    interface IHuman
        {
            string Name { get; set; }
            int Age { get; set; }
        }


    И теперь, благодаря реализации интерфейса в этих классах мы можем удобно использовать этот самый интерфейс, например:
    class Create
        {
            public IHuman Human { get; set; }
            public Create()
            {
                Human = new CoolHuman();
            }
            public void Hello()
            {
                Console.WriteLine("Hello, {0}. Today you are {1} years old", Human.Name, Human.Age);
            }
        }


    Конкретно в вашем случае интерфес не нужен.
    Ответ написан
    4 комментария
  • Как поменять элементы массива местами?

    Collin
    @Collin
    Вы описали алгоритм сортировки пузырьком.

    Его реализация:

    int[] array = new[] { 1, 2, 3, 4, 5 };
    int temp;
                for (int i = 0; i < array.Length-1; i++)
                {
                    for (int j = i + 1; j < array.Length; j++)
                    {
                        if (array[i] > array[j])
                        {
                            temp = array[i];
                            array[i] = array[j];
                            array[j] = temp;
                        }
                    }
                }


    Теперь просто примените этот алгоритм к своей конкретной задаче.
    Ответ написан
    4 комментария
  • Не работает код на Python, что делать?

    Collin
    @Collin
    У вас не табулирован блок кода после :

    Так как в питоне нет ни точки с запятой, ни скобок (в основном) важную роль играет правильная табуляция. Читайте внимательно ошибки, которые вам выбрасывает интерпритатор, там все написано =)

    Вот такой должен был быть ваш код:

    from pyrogram import Client
    import time
    
    i = 1
    
    
    api_id = id
    api_hash = "hash"
    
    with Client("my_account", api_id, api_hash) as app:
        while True:
            try:
                if i <= 68:
                    app.set_profile_photo(photo = "C:/Users/Block/Desktop/cat/f{i}.jpg")
                    i += 1
                    time.sleep(10)
                else :
                    i = 1
            except:
                continue


    Ну... или вот так:
    from pyrogram import Client
    import time
    
    api_id = id
    api_hash = "hash"
    
    with Client("my_account", api_id, api_hash) as app:
        for i in range(68):
            try:
                app.set_profile_photo(photo = "C:/Users/Block/Desktop/cat/f{i}.jpg")
                time.sleep(10)
            except:
                continue


    Зачем вам правда блок try except здесь, я не совсем понимаю, если вы не обрабатываете ошибку. Лучше от него вовсе избавиться:

    from pyrogram import Client
    import time
    
    api_id = id
    api_hash = "hash"
    
    with Client("my_account", api_id, api_hash) as app:
        for i in range(68):
            app.set_profile_photo(photo = "C:/Users/Block/Desktop/cat/f{i}.jpg")
            time.sleep(10)
    Ответ написан
    2 комментария
  • Как из string добавить в datagridView?

    Collin
    @Collin
    Тут зависит от того, как именно вы используете грид. Желательно выкладывать фрагмент кода.

    Обычно с гридом используют DataSource, к примеру биндят в него dataSet, который содержит в себе Tables.

    Выглядит это так:

    dataGridView1.DataSource = dataSet.Tables[0];
    (на месте "0" может быть и "Название таблицы")

    В таком случае нам потребуется добавлять строку в таблицу Tables[0]

    dataSet.Tables[0].Rows.Add(); 
    dataSet.Tables[0].Rows[dataSet.Tables[0].Rows.Count - 1][int номер ячейки, куда добавить string] = receivedData;

    Здесь нужно пояснить, что строки и ячейки в dataSet.Tables индексируются как
    .Rows[int индекс строки][int индекс столбца/ячейки (Cells)]
    , и для того, что бы узнать, какая наша строка добавилась (а добавилась она в конец), мы, узнав количество Rows.Count строк, вычитаем из Count 1, т.к. индексирование в списках, массивах и т.д. начинается с 0, а в Count не может быть 0, если есть хоть одна строка, то Count уже будет равен 1.

    Может потребоваться обновление грида:
    dataGridView1.Update();
    Ответ написан
    Комментировать
  • Как удалить всё, кроме букв?

    Collin
    @Collin
    Ответ написан
    Комментировать

Лучшие вопросы пользователя

Все вопросы (7)