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)
这是一个愚蠢的例子,但你应该明白这个想法.
你正在寻找代表.
委托是定义方法签名的类型.实例化委托时,可以将其实例与具有兼容签名的任何方法相关联.您可以通过委托实例调用(或调用)该方法.
您在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)