我定义了一个委托类型,如:
delegate void DrawShape(Brush aBrush,Rectangle aRect);
您能告诉我为什么以下创建委托对象的方法都是正确的:
DrawShape DrawRectangleMethod = CreateGraphics().FillRectangle;
DrawShape AnotherDrawRectangleMethod = new DrawShape(CreateGraphics().FillRectangle);
为什么没有“新”的方法可以正常工作?
答案 0 :(得分:3)
DrawShape DrawRectangleMethod = CreateGraphics().FillRectangle;
是可能的,这要归功于C#2隐含的方法组转换,这些转换是规范的here。
答案 1 :(得分:1)
C#非常聪明,可以为您处理方法组。方法组是没有括号的方法名称;具有不同签名的方法可能存在许多重载,但没有括号的“基本”名称称为方法组。编译器将为您插入构造函数调用,允许您编写更简洁的代码行。
答案 2 :(得分:0)
因为编译器会自动为您插入它。这只是语法糖。
只需在第Delegates
章中查看Jons Bluffer's Guide。