我试图将对函数的引用作为参数传递
很难解释
我会写一些示例伪代码
(calling function)
function(hello());
function(pass)
{
if this = 0 then pass
else
}
hello()
{
do something here
}
对不起,如果没有多大意义
但是我试图减少使用过的代码,我认为这是一个好主意。
我怎样才能在C#中做到这一点?
答案 0 :(得分:6)
您可以使用delegates将代码传递给方法,例如Action delegate:
void MyFunction(Action action)
{
if (something == 0)
{
action();
}
}
void Hello()
{
// do something here
}
用法:的
MyFunction(Hello);
答案 1 :(得分:4)
我正在尝试将对函数的引用作为参数传递
很难解释
可能很难解释,但实现起来非常简单:下面的代码调用MyFunction
将参数化代码作为参数传递给它。
static void MyFunction(Action<string> doSomething) {
doSomething("world");
}
static void Main(string[] args) {
MyFunction((name) => {
Console.WriteLine("Hello, {0}!", name);
});
}
您可以使用系统提供的委托类型(Action
和Func
)或write your own。
答案 2 :(得分:0)
以下是一个例子:
using System;
public class Example
{
public void Method1(Action hello)
{
// Call passed action.
hello();
}
public void Method2()
{
// Do something here
}
public void Method3()
{
Method1(Method2);
}
}