Как проверить объект на ноль элегантным способом в C #? - PullRequest
0 голосов
/ 03 января 2019

Я хочу проверить, является ли массив 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 голосов
/ 03 января 2019

Вы хотите, чтобы оператор null-coalescing сочетался с оператором null условной :

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

Левая часть оператора ??будет использоваться, если результат не равен нулю, в этом случае он будет использовать 0.?. оценивает против нуля, и если какая-либо часть (потенциальной цепочки) оценивается как ноль, все это равно нулю.Таким образом, он закорачивает и позволяет составлять выражения, подобные этому.

...