如果值不为空,那么从多个结果中分配值的更好方法是什么?

时间:2014-08-28 10:27:45

标签: c# if-statement null

这可能听起来很简单,但我真的想找到一种更好的方法来编写下面的代码,

        if (Master.SerialNo1 != null)
        {
            result.ChipId = Master.SerialNo1;
        }
        if (Master.SerialNo2 != null)
        {
            result.ChipId = Master.SerialNo2;
        }
        if (Master.SerialNo3 != null)
        {
            result.ChipId = Master.SerialNo3;
        }
        if (Master.SerialNo4 != null)
        {
            result.ChipId = Master.SerialNo4;
        }

2 个答案:

答案 0 :(得分:3)

尝试使用??运算符:

result.ChipId = Master.SerialNo1 ?? Master.SerialNo2 ?? Master.SerialNo3 ?? Master.SerialNo4 ?? null;

当然,您可以使用任何默认值代替null

答案 1 :(得分:2)

假设ChipId和SerialNo的类型相同,那么:

result.ChipId = Master.SerialNo1 ?? Master.SerialNo2 ?? Master.SerialNo3 ?? Master.SerialNo4;

这将按照它们在右侧发生的顺序为ChipId分配第一个非空引用。

这可能在多行格式上更具可读性:

result.ChipId = 
       Master.SerialNo1 
    ?? Master.SerialNo2 
    ?? Master.SerialNo3 
    ?? Master.SerialNo4;

??被称为"null coalescing operator"