好了,在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