有没有更优雅的方法来添加可为空的整数?
我需要添加许多可空 int 类型的变量。我使用空合并运算符将其缩减为每行一个变量,但我感觉有一种更简洁的方法可以做到这一点,例如我不能以某种方式将这些语句链接在一起吗?代码。
using System;
namespace TestNullInts
{
class Program
{
static void Main(string[] args)
{
int? sum1 = 1;
int? sum2 = null;
int? sum3 = 3;
//int total = sum1 + sum2 + sum3;
//int total = sum1.Value + sum2.Value + sum3.Value;
int total = 0;
total = total + sum1 ?? total;
total = total + sum2 ?? total;
total = total + sum3 ?? total;
Console.WriteLine(total);
Console.ReadLine();
}
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
这依赖于
IEnumerable>
Enumerable.Sum
a> 方法,其行为如您所期望的那样。如果您的默认值不等于零,则可以执行以下
操作:或简写:
var total = nums.Sum(i => i ?? myDefaultValue);
This relies on the
IEnumerable<Nullable<Int32>>
overload of theEnumerable.Sum
Method, which behaves as you would expect.If you have a default-value that is not equal to zero, you can do:
or the shorthand:
var total = nums.Sum(i => i ?? myDefaultValue);
ETC。
etc.
只是为了最直接地回答问题:
这样,语句就按照使用 + 的要求“链接”在一起
Just to answer the question most directly:
This way the statements are "chained" together as asked using a +
这样你就可以拥有任意数量的值。
this way you can have as many values as you want.
如何使用辅助方法 -
IMO,不是很优雅,但至少一次性添加您想要的任意数量的数字。
How to about helper method -
IMO, not very elegant but at least add as many numbers as you want in a one go.
你可以做
You could do
在相应的不可空表达式中用
(sumX ?? 0)
替换sumX
怎么样?How about just substituting
(sumX ?? 0)
forsumX
in the corresponding non-nullable expression?LINQ 最简单、最优雅的用法:据我
所知,您需要合并来确保结果不可为空。
Simplest, most elegant usage of LINQ:
You need the coalesce AFAIK to make sure the result is not nullable.
如果数组中的所有数字都为空,我希望总数为空。
测试用例
示例实施
If all numbers in the array are null I would expect the total to be null.
Test Cases
Sample Implementation