Пользователь пока ничего не рассказал о себе

Достижения

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

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

Все теги (5)

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

Все ответы (6)
  • Как можно избавиться от подобного мусора в коде?

    @Meloman19
    Множество лейблов, которые при наведении делают одно и то же? Не проще ли создать всего один обработчик и на него привязать события со всех нужных лейблов?
    private void label_MouseEnter(object sender, EventArgs e)
    {
       (sender as Label).ForeColor = Color.FromArgb(35, 33, 61);
    }
    
    private void label_MouseLeave(object sender, EventArgs e)
    {
       (sender as Label).ForeColor = Color.White;
    }


    Теперь во всех событиях указывает один и тот же обработчик.
    Ответ написан
  • При многопоточной работе исключена вероятность одновременнего доступа к ресурсам?

    @Meloman19
    Ты не совсем понял проблему многопоточности. Да, чтение неизменяемого значения из множества потоков безопасно, но вот изменение - нет.

    На примере:
    Лежит в памяти значение x = 1. Пока его только читают, всё ок, но предположим, что это у нас какой-то счётчик и два потока хотят его увеличивать на 1.

    Первый поток считывает значение, кладёт его в стек, добавляет 1 и после записывает результат (2) обратно. Сам видишь, что тут отнюдь не одна операция, и между моментом считывания и записью проходит время. В это время второй поток может спокойно успеть считать пока ещё старое значение. Выходит, что оба потока возьмут 1, увеличать её на 1 и запишут в память, не важно в каком порядке. В результате вроде как оба потока отработало код, но значение в памяти увеличено только на 1. В этом и проблема.

    Списки, к примеру, внутри хранят тот же счётчик для количества элементов, поэтому одновременная запись может неправильно отработать.
    Ответ написан
  • Почему сравнение эта string строка не равна такой же строке после string.Format()?

    @Meloman19
    Потому что сравнение string и сравнение object - это разные вещи.
    String сравнивается посимвольно, как и должно быть, а у object сравниваются ссылки на экземпляры.

    Переменные client и broker компилятор для оптимизации ссылает на один и тот же экземпляр string, поэтому сравнение их, как object, возвращает True. В случае же agent, создаётся новый экземпляр string (Format вызывает new string()), поэтому сравнение их, как object, возвращает False.
    Ответ написан