Просто небольшое наблюдение.
Вы сказали это:
В противном случае я получу нулевое исключение во второй части.(подчеркивает мою)
На самом деле это не так.Если короткое замыкание не гарантировано, вы можете получить IndexOutOfRangeException
во второй части.
Это все еще возможно, вы можете получить NullReferenceException
, если первый элемент в вашемMyArray
объект фактически равен нулю (или если любой из других объектов в этом выражении равен).
Единственная полностью безопасная проверка будет такой:*
bool conditionHolds =
MyObject == null ||
MyObject.MyArray == null ||
MyObject.MyArray.Count == 0 ||
MyObject.MyArray[0] == null ||
MyObject.MyArray[0].SomeValue == 0;
if (conditionHolds)
{
//....
}