c# lambda表达式中的未检查关键字

本文关键字:检查 关键字 lambda 表达式 | 更新日期: 2023-09-27 18:05:47

我使用linq aggregate()来处理可能的Int32溢出:

items.Aggregate(0, (acc, item) => { unchecked { return acc * 10000 + item.Id; } });

有没有简化表达式的方法?

类似async,例如:

async () => {}

c# lambda表达式中的未检查关键字

可以去掉{}return语句:

items.Aggregate(0, (acc, item) => unchecked (acc * 10000 + item.Id));

只是出于好奇,我做了一些测试…如此:

unchecked 
{
    int res = items.Aggregate(0, (acc, item) => acc * 10000 + item.Id);
    Console.WriteLine(res);
}

(我创建的测试应用程序是checked,所以如果我删除unchecked,我得到OverflowException)