如果值不为null,则从多个结果中分配值的更好方法

本文关键字:结果 分配 更好 方法 null 如果 | 更新日期: 2023-09-27 18:20:00

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

        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;
        }

如果值不为null,则从多个结果中分配值的更好方法

尝试使用??运算符:

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

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

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

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

这将按照ChipId在右侧出现的顺序为其分配第一个非空引用。

这可能在多行上更可读:

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

??被称为"空合并运算符"。