[英]How to return a c# function like in python?
我正在尝试做一些可以在python中完成的事情:
class Spam():
def print_four_numbers(a, b, c, d):
print a, b, c, d
class Beacon():
def bar(SpamInstance):
return SpamInstance.print_four_numbers
B, S = Beacon(), Spam()
这里的关键是上面的代码允许我执行以下操作:
>>>B.bar(S)(1, 2, 3, 4)
1 2 3 4
如何使用C#做类似的事情? 如果更改了任何内容,我需要将“ print_four_numbers”方法重载3-4次。 我已经阅读了有关代表和事件的信息,但是它们将在这里(以及如何)工作吗?
我也知道,可以通过简单地将所有这些参数传递给bar()
并将它们“传递”到另一个函数来解决此问题,但是我不喜欢具有很多参数的方法。
谢谢!
class Spam
{
public void PrintFourNumbers(int a, int b, int c, int d)
{
Console.WriteLine(string.Join(" ", new[] {a, b, c, d}));
}
}
class Beacon
{
public System.Action<int, int, int, int> Bar(Spam instance)
{
return instance.PrintFourNumbers;
}
}
class Program
{
public static void Main()
{
var b = new Beacon();
var s = new Spam();
b.Bar(s)(1, 2, 3, 4);
}
}
PrintFourNumbers
方法非常难看; 如果它接受整数数组,看起来会更好,但是我想让它尽可能接近问题中的示例。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.