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
gets to be null
and +=
doesn't work,这是有道理的。
现在,当我有一个带有委托实例的类时,我可以执行以下操作:
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"
一无所获。另外,如果问题太基本,对不起。
谢谢你的帮助!