using System;
public delegate void Printer(string s);
class Program
{
public static void Main(string[] args)
{
Printer p = new Printer(delegate {});
p+= myPrint;
p("Hello");
Console.ReadKey(true);
}
public static void myPrint(string s)
{
System.Console.WriteLine(s);
}
}
看来,如果我必须初始化一个委托一个空匿名函数可以使用+=
以后。 当我省略了new
条款, p
获取要null
和+=
不起作用,这是有道理的。
现在,当我有一类与委托实例,我可以做到以下几点:
using System;
public delegate void Printer(string s);
class Program
{
public static void Main(string[] args)
{
A a = new A();
a.p += myPrint;
a.p("Hello");
Console.ReadKey(true);
}
public static void myPrint(string s)
{
System.Console.WriteLine(s);
}
}
class A {
public Printer p;
}
为什么这可以吗? 是否有委托实例的默认值p
? 它不可能是null
,因为那时我不就能够分配它采用了全新的回调+=
。 我试图用关键字搜索这个问题"default value for delegates"
并没有发现。 另外,对不起,如果这个问题如果太基本。
谢谢你的帮助!