我想测试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
数组为空。
答案 0 :(得分:6)
您希望将null-coalescing运算符与null conditional运算符结合使用:
int addressCount = Output.ScriptPubKey.Addresses?.Length ?? 0;
除非结果为空,否则将使用??
运算符的左侧,在这种情况下,它将使用0
。 ?.
的评估结果为null,如果(潜在链)的任何部分评估为null,则所有评估结果均为null。因此,它会短路并允许您编写这样的表达式。