我正在写一个方法接受两个参数。第一个是一个类,第二个是委托。
public class MyClass {
public delegate object MyDelegate(object[] args = null);
public static void Method1(MyOtherClass c, MyClass.MyDelegate del) {
del.Invoke();
// and other stuff
}
}
我的问题是如何在以下方面使用它们:
答案 0 :(得分:0)
与普通代表没有区别:
public static void Main(string[] args)
{
MyClass.Method1(0, (MyClass.MyDelegate)((arg) =>
{
return 0;
}));
MyClass.Method1(0, DoSomething);
}
private static object DoSomething(object[] args = null)
{
return null;
}
请注意,为简单起见,我更换了MyOtherClass
。指定另一个默认值null
时也是如此(例如字符串变量的文字字符串)。委托的调用逻辑将自动传递默认值:
public delegate object MyDelegate(string args = "123");
private static object DoSomething(string args = "124")
{
Console.WriteLine(args); // prints "123"
return null;
}
因此,您可以省略类方法(DoSomething(string args)
)中默认值的声明,就像我们在lambda表达式中所做的那样。