Возможно, глупый вопрос, но ...Это опасно? О событиях
В моем коде я использую следующую конструкцию в нескольких местах.
void MyFunction()
{
DoSomething(myClass.myProperty)
myClass.PropertyChanged += (s,e) => {
if (e.PropertyName == "myProperty") {
DoSomething(myClass.myProperty);
}
}
}
Поэтому я хочу что-то сделать изначально, а также сделать то же самое, когда свойство изменится в будущем.
Теперь дело в том, что MyFunction() вызывается несколько раз во время выполнения моей программы. Будет ли добавлен делегат, который я присваиваю PropertyChanged, через evertime, который проходит через этот метод? (потребляя больше памяти на каждой итерации и замедляя работу программы) Или компилятор/среда выполнения достаточно умны, чтобы понять, что я должен быть добавлен только в первый раз ..? И если да, то как это работает?
Это не проблема для вас, но с этим синтаксисом невозможно отменить анонимный обработчик событий из этого события, что может привести к некоторым проблемам с памятью. Я бы рекомендовал написать функцию и просто прикрепить обработчик событий с помощью + = new eventhandler (function); –