C# 4.0 C#4.0匿名函数

C# 4.0 C#4.0匿名函数,c#-4.0,anonymous-function,C# 4.0,Anonymous Function,如何在C#4.0中的Javascript中执行以下操作: 我肯定我以前在什么地方见过这个,但我找不到任何例子。你会想看看,尽管它不太像JavaScript,因为C的工作方式有点不同。您可能还想退房 示例代码: namespace Test { class Tests { delegate string MyDelegate(); public void Main(string[] args) { var output = doSo

如何在C#4.0中的Javascript中执行以下操作:

我肯定我以前在什么地方见过这个,但我找不到任何例子。

你会想看看,尽管它不太像JavaScript,因为C的工作方式有点不同。您可能还想退房

示例代码:

namespace Test {
    class Tests {
        delegate string MyDelegate();

        public void Main(string[] args) {
            var output = doSomething("test1", () => { return "test2";} );
        }

        public string doSomething(string test, MyDelegate d) {
            return test + d();
        }
    }
}
使用lambda表达式(无参数,因此为空括号),非常简单:

var output = doSomething(variable, () => {
    // Anonymous function code
});
在C#2.0中,语法有点长:

SomeType output = doSomething(variable, delegate {
    // Anonymous function code
});

您可以使用委托或Lambda表达式。请您提供一个与问题中所述相同的示例好吗?@GateKiller:我添加了一个示例。我想没有JS那么简单,但这是我见过的关于如何执行上述操作的最好示例。谢谢:)@GateKiller:是的,这是C#的强类型特性。这不是真的要做那样的事情。Lambda表达式使它变得更好,但仍然可能是您想要的那么简单。在我的示例中,(x)equal doSomething()也是这样吗?
x
是匿名函数的参数。我很快测试了
(MessageBox.Show)=>{return“Hello World”}
之类的内容,但它抛出了一个错误。你能提供一个完整的例子让我完全理解吗?我得到的印象是,我需要先声明代理,然后才能使用它。这是正确的吗?如果是这样的话,这难道不符合他们的观点吗?你到底想做什么?与Java脚本不同,当“编译器很难或不可能推断输入类型”时,您需要告诉x是什么类型
var output = doSomething(variable, () => {
    // Anonymous function code
});
SomeType output = doSomething(variable, delegate {
    // Anonymous function code
});