Unikaj błędu „Użycie nieprzypisanej zmiennej lokalnej”

Mam dwie metody, które są temu równoważne (przepraszam za wymyślony przykład):

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);
}

(W wywołaniu WithResource jest trochę więcej logiki, które próbuję uwzględnić.)

OtrzymujęUse of unassigned local variable błędy czasu kompilacji, ponieważ asercje ... używają nieprzypisanych zmiennych. Obecnie unikam problemu, przypisując im -1 inull odpowiednio.

Inicjowanie donull nie czuje się źle, ale chciałbym uniknąć umieszczenia -1 w tym miejscu ... Naprawdę chciałbym powiedzieć kompilatorowi, „zaufaj mi, to się zainicjuje”. Ponieważ jest to test, nie obchodzi mnie zbytnio, czy to bomba, bo to tylko oznacza, że ​​będę musiał naprawić test.

Kusi mnie, aby zapytać, czy istnieje sposób, aby przekazać tę wskazówkę kompilatorowi, ale mieć wrażenie, że jest jeszcze brzydsza. Czy taka podpowiedź istnieje lub czy powinienem zainicjować zmienne, jak teraz?

questionAnswers(3)

yourAnswerToTheQuestion