如何在C#中以优雅的方式测试对象是否为null?

时间:2019-01-02 21:27:26

标签: c# null

我想测试Output.ScriptPubKey.Addresses数组是否为空,然后将其分配给参数列表。如果为空,那么我想将参数值设置为0,否则使用数组中的项目数。

我在下面写的东西显得笨拙和冗长,有没有更优雅的方式?

int addressCount;
if (Output.ScriptPubKey.Addresses == null) { addressCount = 0; } else {
    addressCount = Output.ScriptPubKey.Addresses.Length;
}
var op = new DynamicParameters();
op.Add("@AddressCount", addressCount);

该代码曾经是:

op.Add("@AddressCount", Output.ScriptPubKey.Addresses.Length);

但有时Addresses数组为空。

1 个答案:

答案 0 :(得分:6)

您希望将null-coalescing运算符与null conditional运算符结合使用:

int addressCount = Output.ScriptPubKey.Addresses?.Length ?? 0;

除非结果为空,否则将使用??运算符的左侧,在这种情况下,它将使用0?.的评估结果为null,如果(潜在链)的任何部分评估为null,则所有评估结果均为null。因此,它会短路并允许您编写这样的表达式。