对方法C#的引用

Key*_*eyo 3 c# python functional-programming

我只是想知道这个python代码是否有C#equivilent.我想将方法​​的名称存储在某种集合中,稍后再调用它们.我搜索过,但我真的不知道该找什么.

例如在python中,我可以这样做:

def add_one(x):
  return x + 1
def double_it(x):
  return x*2

maths_rules = [add_one, double_it]
def do_maths(maths_rules, x):
  for func in maths_rules:
    x = func(x)
  return x

print do_maths(maths_rules, 9)
# >>> 20
Run Code Online (Sandbox Code Playgroud)

这是一个愚蠢的例子,但你应该明白这个想法.

dtb*_*dtb 7

你正在寻找代表.

委托是定义方法签名的类型.实例化委托时,可以将其实例与具有兼容签名的任何方法相关联.您可以通过委托实例调用(或调用)该方法.

您在C#中的示例,使用Func <T,TResult> Delegate:

int add_one(int x) { return x + 1; }
int double_it(int x) { return x * 2; }

var maths_rules = new List<Func<int,int>> { add_one, double_it };

int do_maths(IEnumerable<Func<int,int>> maths_rules, int x)
{
    foreach (var func in maths_rules)
    {
        x = func(x);
    }
    return x;
}

Console.WriteLine(do_maths(maths_rules, 9));
// prints "20"
Run Code Online (Sandbox Code Playgroud)