Kann ich mein eigenes Kurzschließen in einem Methodenaufruf erzwingen?

Angenommen, ich möchte eine Reihe von Objekten überprüfen, um sicherzustellen, dass keine null ist:

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

    // do something with obj.Parameters.UserSettings
}

Es ist eine verlockende Aussicht, eine Hilfsfunktion zu schreiben, um eine variable Anzahl von Argumenten zu akzeptieren und diese Art der Prüfung zu vereinfachen:

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

    return true;
}

Dann könnte der obige Code lauten:

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

Recht?Falsch.&nbsp;Obobj&nbsp;ist null, dann bekomme ich eineNullReferenceException&nbsp;wenn ich versuche zu bestehenobj.Parameters&nbsp;zuNoNulls.

Der obige Ansatz ist also eindeutig falsch. Aber dieif&nbsp;Anweisung mit der&&&nbsp;Betreiber funktioniert gut, da es kurzgeschlossen ist. So:Gibt es eine Möglichkeit, eine Methode kurzzuschließen, sodass ihre Argumente erst ausgewertet werden, wenn in der Methode explizit darauf verwiesen wird?