Используя VB.NET IIF, я получаю исключение NullReferenceException
Я делаю небольшую отладку, и поэтому я хочу записать значение eventArgs
У меня есть простая строка, которая в основном делает:
logLine = "e.Value: " + IIf(e.Value Is Nothing, "", e.Value.ToString())
Насколько я понимаю, функция IIF: если значение e.Value равно Nothing (null), то оно должно возвращать пустую строку, если нет - возвращать.ToString значения. Я, однако, получаю исключение NullReferenceException. Это не имеет смысла для меня.
Есть идеи?
3 ответа
VB не выполняет оценку короткого замыкания в Iif. В вашем случае e.Value.ToString() оценивается независимо от того, является ли e.Value ничем.
Это ожидаемое поведение.
IIF
это функция; поэтому параметры функции будут оцениваться перед отправкой в функцию.
Напротив, троичный оператор в C# является языковой конструкцией, которая предотвращает вычисление второго параметра, если выражение троичного является истинным.