好了,在Python可以做到这一点:奇怪的想法:C# - 声明的方法insinde另一种方法
def foo(monkeys):
def bar(monkey):
#process and return new monkey
processed_monkeys = list()
for monkey in monkeys:
processed_monkeys += bar(monkey)
return processed_monkeys
(这只是个愚蠢的例子) 有时候我会想念声明内的另一个方法的这种功能方法在C#中。但今天我对完成这个如下想法:
List<Monkey> foo(List<Monkey> monkeys)
{
Func<Monkey, Monkey> bar = delegate(Monkey monkey)
{
//process and return new monkey
}
List<Monkey> processed_monkeys = new List<Monkey>(monkeys.Count);
foreach(Monkey monkey in monkeys)
processed_monkeys.Append(bar(monkey));
return processed_monkeys;
}
显然,解决方法不提供完全相同的功能与原来的Func键或操作委托仅限于4个参数,但超过4个参数很少需要...
你对此有什么看法?
这是邪恶的,应该避免所有,但非常特殊的情况?
这是怎么回事?每次函数被调用时,是否会创建一个新的bar函数,或者编译器会以某种方式优化它?
其实,Func <...>只限于16个参数(.Net 4.0),应该足够了;-) – 2010-08-17 12:42:32
好的,我仍然在.Net 3.0上。 我想知道有没有人遇到过他想要传递超过16个参数的情况......故事,任何人? ;-) – licensedlice 2010-08-17 12:46:27
我在.NEt 2.5中有一个函数,它有更多的功能。但是,在我谈论的情况下,我相信这是完全可以接受的:) – 2010-08-17 12:52:25