当我没有显式传递引用方法的输入参数类型时,Action委托自定义类如何工作:
DirectMethodCall.PassMethod(x=>x.NoReturnOneParameterMethod(1));
public static void PassMethod(Action<NewClass> c)
{
NewClass op = new NewClass();
c(op);
}
为什么我需要将“op”传递给Action委托?
答案 0 :(得分:1)
由于发布代码示例的评论有点混乱,我会继续这里。
您不是在重复代码,而是误解了您实际编码的内容。 public static void PassMethod(Action<NewClass> c)
表示
PassMethod
需要作为参数在NewClass
对象上执行的方法。
也许这会让它更清晰:
void Main()
{
//I am defining the implementation of a method which requires as integer as a parameter, but I don't actually invoke it, just define it.
ExecuteMethod(i => Console.WriteLine(i));
}
public static void ExecuteMethod(Action<int> method)
{
//I don't know what method does, all I know is that I am running it with the number 5.
method(5);
}
ExecuteMethod
采用需要整数的方法。它不知道该方法的作用。它只知道它需要一个int,它传递值5
实际代码来自来电者:
i => Console.WriteLine(i)
此处,i
设置为5,因此结果为5将打印到控制台。
答案 1 :(得分:0)
您的PassMethod
期待一个委托接受一个NewClass
类型的参数,并使用参数NoReturnOneParameterMethod()
调用1
并返回类型为void
Action<T>
表示它是一个委托,它以T
类型作为参数,返回类型为void
。
请参阅:MSDN Action