如何调用C#匿名函数? [英] How to call anonymous function in C#?

查看:141
本文介绍了如何调用C#匿名函数?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我很感兴趣,如果它使用C#编写类似于此Javascript一个代码是可行的:

  VAR V =(函数()
{
返回一些价值;
})()

我能做到的最多的是:

  Func键<串GT; VF =()=> 
{
返回一些价值;
};

变种V = VF();



不过,我想是这样的:

  //给出错误CS0149:方法名称预计
变种v =(()=>
{
返回一些价值;
})();



有没有一些方法来调用函数离开它匿名?


< DIV CLASS =h2_lin>解决方案

是的,但是C#是静态类型的,所以你需要指定一个委托类型。



有关例如,使用构造函数语法:

 变种v =新Func键与LT;串>(()=> 
{
返回一些价值;
})();

//较短的版本
变种V =新Func键与LT;串>(()=>中某些价值)();



...或者投语法,这会导致混乱有太多的括号:)

  VAR v =((Func键<串>)(()=> 
{
返回一些值;
}))();

//较短的版本
变种V =((Func键<串GT;)(()=>中某些价值))();


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?

解决方案

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"))();

这篇关于如何调用C#匿名函数?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆