小编lic*_*ice的帖子

有没有办法将一个代码段嵌入另一个代码段?

我们假设我有

  • 片段A.
  • 片段B
    ,其中 片段A 包含 片段B n次 , n> 1.

现在我已将代码段B的内容复制到代码段A中.这有一个缺点,即每当我改变片断乙,我必须另行更改段一个.因此,我的问题是是否有某种声明将一个片段嵌入到另一个片段中?
例如
<externalsnippet src=".\snippetB.snippet" />
或类似的东西.

xml embed visual-studio-2008 visual-studio code-snippets

6
推荐指数
1
解决办法
91
查看次数

奇怪的想法:C# - 声明一个方法insinde另一种方法

好的,在python中可以这样做:

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
Run Code Online (Sandbox Code Playgroud)

(这只是一个愚蠢的例子)我有时会错过在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;
}
Run Code Online (Sandbox Code Playgroud)

显然,变通方法不提供与原始功能完全相同的功能,因为Func或Action Delegates限制为4个参数,但很少需要4个以上的参数......

你对此有何看法?
这是邪恶的,应该避免除了非常特殊的情况吗?
这个表现如何?每次调用函数时都会创建一个新的bar函数,还是编译器会以某种方式优化它?

c# python methods anonymous-methods

0
推荐指数
1
解决办法
265
查看次数