C# 如果值不为null,那么从多个结果中赋值的更好方法是什么?

C# 如果值不为null,那么从多个结果中赋值的更好方法是什么?,c#,if-statement,null,C#,If Statement,Null,这听起来可能很简单,但我真的想找到一种更好的方法来编写下面的代码 if (Master.SerialNo1 != null) { result.ChipId = Master.SerialNo1; } if (Master.SerialNo2 != null) { result.ChipId = Master.SerialNo2; } i

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

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

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

result.ChipId = Master.SerialNo1 ?? Master.SerialNo2 ?? Master.SerialNo3 ?? Master.SerialNo4;
这将按照ChipId在右侧出现的顺序将第一个非空引用分配给ChipId

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

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

??
被称为。

尝试使用
??
操作符:

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

当然,您可以使用任何默认值,而不是
null

这个问题似乎离题了,因为它属于我看到的唯一选择是
result.ChipId=Master.SerialNoX!=无效的Master.SerialNoX:[…]
但它确实是一样的,就在一行中。谢谢@matthew watson