How to call anonymous function in C#?

时光怂恿深爱的人放手 提交于 2019-11-28 20:18:21

问题


I am interested if it's possible using C# to write a code analogous to this Javascript one:

var v = (function()
{
    return "some value";
})()

The most I could achieve is:

Func<string> vf = () =>
{
    return "some value";
};

var v = vf();

But I wanted something like this:

// Gives error CS0149: Method name expected
var v = (() =>
{
    return "some value";
})();

Are there some way to call the function leaving it anonymous?


回答1:


Yes, but C# is statically-typed, so you need to specify a delegate type.

For example, using the constructor syntax:

var v = new Func<string>(() =>
{
    return "some value";
})();

// shorter version
var v = new Func<string>(() => "some value")();

... or the cast syntax, which can get messy with too many parentheses :)

var v = ((Func<string>) (() =>
{
    return "some value";
}))();

// shorter version
var v = ((Func<string>)(() => "some value"))();



回答2:


Here's how you could then utilize such a construct to enclose context - closure-

Control.Click += new Func<string, EventHandler>((x) =>
new System.EventHandler(delegate(object sender, EventArgs e)
{

}))(valueForX);


来源:https://stackoverflow.com/questions/3923864/how-to-call-anonymous-function-in-c

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!