Vermeiden Sie den Fehler "Verwendung nicht zugewiesener lokaler Variablen"

Ich habe zwei Methoden, die dazu äquivalent sind (verzeihen Sie das erfundene Beispiel):

public void WithResource(Action<Resource> action) {
    using (var resource = GetResource()) {
        action(resource);
    }
}

public void Test() {
    int id;
    SomeObject someObject;

    WithResource((resource) => {
        id = 1;
        someObject = SomeClass.SomeStaticMethod(resource);
    });

    Assert.IsNotNull(someObject);
    Assert.AreEqual(id, someObject.Id);
}

(In dem WithResource-Aufruf, den ich ausrechnen möchte, steckt etwas mehr Logik.)

Ich erhalteUse of unassigned local variable Kompilierungsfehler, da die Zusicherungen ... nicht zugewiesene Variablen verwenden. Ich vermeide derzeit das Problem durch Zuweisen von -1 undnull beziehungsweise.

Initialisierung aufnull fühlt sich nicht schlecht an, aber ich würde es gerne vermeiden, das -1 dort einzutragen ... Ich möchte dem Compiler wirklich sagen "Vertrau mir, das wird initialisiert". Da es sich um einen Test handelt, ist es mir eigentlich egal, ob er bombardiert, denn das bedeutet nur, dass ich den Test reparieren muss.

Ich bin versucht zu fragen, ob es eine Möglichkeit gibt, dem Compiler diesen Hinweis zu geben, aber ich habe das Gefühl, dass es noch hässlicher ist. Gibt es einen solchen Hinweis oder sollte ich die Variablen einfach wie jetzt initialisieren?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage