Рассмотрим этот фрагмент:
public delegate void PrintSomeText(string);
И где-то законным мы имеем следующий метод:
public void ShowText(string s) { Console.WriteLine(s); }
Что такое() различия между двумя способами назначения метода ShowText
для printObj
ниже?
static void Main()
{
PrintSomeText printObj;
/* ... */
printObj = new PrintSomeText(ShowText); // The first way
}
против:
static void Main()
{
PrintSomeText printObj;
/* ... */
printObj = ShowText; // The second way
}
Нет никакой разницы. Начиная с.NET 2.0/VS2005, компилятор С# добавил улучшение, которое автоматически выводило тип делегата на основе левой части задания и неявно добавляло new PrintSomeText
вызов new PrintSomeText
к скомпилированному коду. После компиляции они идентичны.
Фактически, они ничем не отличаются. Второй метод, введенный в С# 2.0, является более кратким.
Для получения дополнительной информации ознакомьтесь с этой статьей MSDN