C#中如何将带返回值的匿名方法赋值给变量?
嘿,我来帮你理清楚这个问题~你的代码写法有问题,因为你混淆了「把匿名函数本身赋值给变量」和「把匿名函数执行后的返回值赋值给变量」这两种场景,而且语法上也不符合C#的规则。我分两种情况给你演示正确的写法:
场景1:把带返回值的匿名函数本身赋值给变量
如果你的需求是把这个匿名方法作为一个可调用的函数存储起来,后续再执行它,那变量的类型得是对应的委托类型,比如Func<byte[]>(这个预定义委托代表无输入参数、返回byte[]类型的方法)。
示例代码:
// 定义变量存储匿名函数,类型匹配委托 Func<byte[]> getByteArray = () => { // 这里可以写你的业务逻辑,比如数据处理、计算等 Console.WriteLine("执行匿名函数的逻辑"); return new byte[] { 0, 1, 2, 3 }; }; // 后续需要的时候调用这个函数,得到byte数组 byte[] V = getByteArray();
场景2:直接把匿名函数的返回值赋值给V变量
如果你的需求是立即执行匿名方法,并把返回结果直接存到V里,可以用括号包裹Lambda表达式后直接调用:
示例代码:
byte[] V = (() => { // 这里写你的逻辑代码 return new byte[] { 0, 1, 2, 3 }; })();
为什么你的原代码出错?
你原来写的new byte[]() { //Some code here return new byte[]{0,1,2,3}; }是完全错误的语法:
new byte[]()这种写法不符合C#数组初始化规则,数组初始化不需要加括号;- 数组初始化器
{ ... }里只能放元素值,不能写return语句,你把匿名方法的逻辑和数组初始化搞混了。
内容的提问来源于stack exchange,提问作者X Dev
相关产品推荐
相关产品推荐

