Я создал общий делегат, и я хочу назначить ему функцию без каких-либо аргументов. Возможно ли это?C# общий делегат, который принимает функцию без аргументов
Вот что я пытался до сих пор:
class Program
{
public delegate void TemplateDel<T>(T item);
public static void fWriteLetters(char[] p_cLetters)
{
for (int i = 0; i < p_cLetters.Length; i++)
Console.WriteLine(p_cLetters[i]);
}
void fNoArg()
{
Console.WriteLine("No arguments!");
}
static void Main(string[] args)
{
TemplateDel<char[]> l_dWriteLeters = new TemplateDel<char[]>(fWriteLetters);
TemplateDel<void> l_dNoArg = new TemplateDel<void>(fWriteLetters);
}
}
последняя строка кода не компилируется ...
«Не компилируется» подразумевает сообщение об ошибке - что это такое? Кроме того, если последняя строка не будет 'new TemplateDel (fNoArg)' not 'fwriteLetters'? –
http://stackoverflow.com/a/11319003/815938 – kennyzx
В качестве точки стиля: не определяйте для себя собственные типы делегатов. Используйте один из ['Func'] (https://msdn.microsoft.com/en-us/library/bb534960.aspx) или [' Action'] (https://msdn.microsoft.com/en-us /library/018hxwa8%28v=vs.110%29.aspx) делегаты из фреймворка, они уже существуют для 16 параметров. Если вы работаете с обработчиками событий - принимаете (объект, «EventArgs»), то используйте ['EventHandler'] (https://msdn.microsoft.com/en-us/library/system.eventhandler%28v=vs.110% 29.aspx). Поскольку эти хорошо известные читатели вашего кода будут лучше понимать, что вы делаете. – Richard