Могу ли я вызвать собственное короткое замыкание в вызове метода?

Предположим, я хочу проверить несколько объектов, чтобы убедиться, что ни один из них не равен нулю:

if (obj != null &&
    obj.Parameters != null &&
    obj.Parameters.UserSettings != null) {

    // do something with obj.Parameters.UserSettings
}

Это заманчивая перспектива - написать вспомогательную функцию, которая будет принимать переменное число аргументов и упростит такую проверку:

static bool NoNulls(params object[] objects) {
    for (int i = 0; i < objects.Length; i++)
        if (objects[i] == null) return false;

    return true;
}

Тогда приведенный выше код может стать:

if (NoNulls(obj, obj.Parameters, obj.Parameters.UserSettings)) {
    // do something
}

Правильно?Неправильно. Еслиobj это н, тогда я получуNullReferenceException когда я пытаюсь пройтиobj.Parameters вNoNulls.

Таким образом, вышеуказанный подход явно ошибочен. Ноif заявление с использованием&& Оператор работает просто отлично, так как он замкнут. Так:Есть ли способ сделать метод коротким замыканием, чтобы его аргументы не оценивались до тех пор, пока они не будут явно указаны в методе?

Ответы на вопрос(3)

Ваш ответ на вопрос