C#Lambda函数:返回数据

C#Lambda函数:返回数据,c#,.net,delegates,anonymous-function,lambda,C#,.net,Delegates,Anonymous Function,Lambda,我是否遗漏了什么,或者无法从lambda函数返回值,例如 objecttest=()=>{returnnewobject();} 或 stringtest=()=>{返回“hello”;} 我得到一个生成错误“无法将lambda表达式转换为类型‘string’,因为它不是委托类型” 就像这个语法分配lambda,而不是lambda的结果,这是我没有预料到的。 我可以通过将函数分配给Func并按名称调用它来实现所需的功能,但这是唯一的方法吗 关于我的例子,请不要问“你为什么要这样做?” 提前谢谢

我是否遗漏了什么,或者无法从lambda函数返回值,例如

objecttest=()=>{returnnewobject();}

stringtest=()=>{返回“hello”;}

我得到一个生成错误“无法将lambda表达式转换为类型‘string’,因为它不是委托类型”

就像这个语法分配lambda,而不是lambda的结果,这是我没有预料到的。 我可以通过将函数分配给Func并按名称调用它来实现所需的功能,但这是唯一的方法吗

关于我的例子,请不要问“你为什么要这样做?”


提前谢谢

这是可能的,但您正在尝试将lambda分配给
字符串
–您需要调用lambda:

Func<string> f = () => { return "hello"; };
string test = f();
Func f=()=>{返回“hello”;};
字符串测试=f();
错误消息实际上说明了这一切:

无法将lambda表达式转换为“string”类型

…这正是问题所在

如果您想调用lambda内联-但实际上:为什么-您也可以这样做,您只需要首先将其显式地放入委托中:

string test = (new Func<string>(() => { return "hello"; }))();
stringtest=(newfunc(()=>{return“hello”;}))();

将lambda表达式指定给隐式类型的变量将不起作用。@DominicKexel啊,非常正确。啊,太快了。你回答的时候我正在编辑我的问题。是否可以内联调用lambda而不是分配给Func?谢谢谢谢康拉德。因为我有一个漂亮的大屏幕,喜欢写这样的行:
queuePath=newfunc(()=>{if(Directory.Exists)(currentLineSplit[1]){return currentLineSplit[1];}否则{抛出新异常(“队列路径不存在”);})
@DrewR为什么不直接使用<代码>\u queuePath=(Directory.Exists(currentLineSplit[1])?currentLineSplit[1]:引发新异常(“队列路径不存在”)@IAbstract您的编辑完全改变了问题,所以我将其回滚。@KonradRudolph:奇怪。。。我试图删除最后两行。谢谢您的收看。:)可能重复的