C#委托为什么实例化时可以不使用new
我很疑惑这个问题,Microsoft Learn 不是说委托是一种引用类型吗,为什么我可以像下面一样当值类型使用:
public class MyClass
{
public delegate void myDelegate();
public MyDelegate d;
public MyClass()
{
d = fun;
}
public void fun()
{
}
}
破案了,这是C#提供的语法糖。通过查看编译后的代码,发现C#将d = fun
替换成了d = new MyDelegate(fun)
,将d += fun
替换成了d = Delegate.Combine(d, new myDelegate(fun));
语法糖虽然好,但容易让人混淆概念呀。