Вопрос о делегатах
Я думал, что понимаю делегатов, но я явно не понимаю, так как этот код дает мне результат, отличный от того, что я ожидал. Почему вызов не вызывает исключение NullRefenceException после того, как мы назначаем speaker null или новому экземпляру? Может быть, это потому, что сборщик мусора не имел возможности очистить вещи?
Что я уже пробовал:
void Main() { var speaker = new Speaker(); Action action = new Action(speaker.SayName); speaker.Name = "Luke"; action.Invoke(); // outputs "My name is Luke" speaker.Name = "Leia"; action.Invoke(); // outputs "My name is Leia" speaker = null; action.Invoke(); // outputs "My name is Leia" speaker = new Speaker(); speaker.Name = "Chewy"; action.Invoke(); // outputs "My name is Leia" } class Speaker { public string Name { get; set; } public void SayName() { Console.WriteLine($"My name is {Name}"); } }