Какова цель статического «только для чтения» в EventArgs - PullRequest
0 голосов
/ 31 мая 2019

Я новичок в C #, просто вопрос по классу EventArgs.Мы знаем, что определение таково:

public class EventArgs
{
   public static readonly EventArgs Empty;
   public EventArgs();
}

, и я предполагаю, что одно из применений - это когда вам нет дела до передачи пользовательской информации

public event EventHandler<EventArgs> TestHappening;

private void MyMethod()
{
    TestHappening( this, EventArgs.Empty );
}

, но мы не можем добиться того жецель с помощью:

 TestHappening( this, new EventArgs() );

Ответы [ 2 ]

2 голосов
/ 31 мая 2019

Предпочтительно использовать EventArgs.Empty по двум причинам:

  1. Удобно проверять пустые аргументы

    EventArgs newArgs = new EventArgs();
    EventArgs emptyArgs = EventArgs.Empty;
    Console.WriteLine(newArgs == EventArgs.Empty); // false
    Console.WriteLine(emptyArgs == EventArgs.Empty); // true
    
  2. Нет дополнительного выделения памяти, потому что вы по существу используете тот же экземпляр класса.
0 голосов
/ 31 мая 2019

EventArgs.Empty просто определяет экземпляр EventArgs без данных.В C # существует множество классов с определенным свойством для объявления состояния, вида или значения этого класса для поддержки тех, кто просто подходит к C #.string.Empty, int.MaxValue и т. Д. Являются примером для этого

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...