发现委托注册的两种方法,有区别没? 求大神解
- C# code
public delegate void TestDegegate();//定义委托 class Program { public void Speak() { Console.WriteLine("Speak:Hello!"); } static void Main(string[] args) { Program t = new Program(); TestDegegate test1 = new TestDegegate(t.Speak);//注册一次,实例化注册 test1 += new TestDegegate(t.Speak);//继续注册一次,实例化注册 test1();//执行 Console.ReadKey(); } }
- C# code
public delegate void TestDegegate();//定义委托 class Program { public void Speak() { Console.WriteLine("Speak:Hello!"); } static void Main(string[] args) { Program t = new Program(); TestDegegate test1 =t.Speak;//注册一次 test1 +=t.Speak;//继续注册一次 test1();//执行 Console.ReadKey(); } }
两次执行结果一样如下:(截图不知道怎么放上来,人工模拟结果)
Speak:Hello!
Speak:Hello!
请教各位大大,这两种注册方式有没有区别呀? 还是建议都用 new delegate 这种实例化的注册方法好些么? 因为看到的书上貌似都是说的这种 实例化委托 注册的方式 ,偶然间发现“不用实例化”(真实情况不知道是不是内部执行的时候自动实例化了)的写法
[解决办法]
其实是编译器帮你new了而已。
[解决办法]
- C# code
public delegate void TestDegegate();//定义委托 class Program { public void Speak() { Console.WriteLine("Speak:Hello!"); } static void Main(string[] args) { Program t = new Program(); TestDegegate test1 = new TestDegegate(t.Speak);//注册一次,实例化注册 test1 += new TestDegegate(t.Speak);//继续注册一次,实例化注册 test1();//执行 Console.ReadKey(); } }
[解决办法]
其实没有啥子区别而已 不过前者你那么写 有利于以后代码阅读
[解决办法]
后面那种写法是C#2.0引入的新特性——方法组转换(Method group conversion)
[解决办法]
一样的,还可以匿名函数