C#的新手,我如何创建一个接受方法作为其参数之一的方法?
听起来有点奇怪,但我希望它能在c#中得到支持.
我试过的:
public void CalculateRepairedCars(int total, /*here I want to pass a method..*/)
{
...
}
Run Code Online (Sandbox Code Playgroud)
这是我想传递的方法:
public int Calculate{int totalCars, Condition condition}
{
...
}
Run Code Online (Sandbox Code Playgroud)
"将一个方法放在一个值中"(在C#中可以做很多事情,比如作为参数传递给另一个方法)被称为创建该方法的委托.
委托具有直接对应于其指向的方法的签名的类型(即其参数的数量和类型以及返回值).C#为没有返回值(Action和它的兄弟节点)的代表以及那些(Func和它的兄弟节点)的代表提供现成的类型.
在您的情况下,Calculate匹配的签名类型,Func<int, Condition, int>所以你会写
public void CalculateRepairedCars(int total, Func<int, Condition, int> calc)
{
// when you want to invoke the delegate:
int result = calc(someCondition, someInteger);
}
Run Code Online (Sandbox Code Playgroud)
并使用它
CalculateRepairedCars(i, Calculate);
Run Code Online (Sandbox Code Playgroud)