Избегайте ошибки «Использование неназначенной локальной переменной»
У меня есть два метода, которые эквивалентны этому (простите за надуманный пример):
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);
}
(Есть некоторая логика в вызове WithResource, который я пытаюсь выделить.)
Я получаюUse of unassigned local variable
ошибки во время компиляции, потому что утверждения ... используют неназначенные переменные. Я в настоящее время избегаю проблемы, назначая им -1 иnull
соответственно.
Инициализация вnull
не плохо, но я бы хотел не добавлять туда -1 ... Я действительно хотел бы сказать компилятору: "Поверь мне, это станет инициализированным". Поскольку это тест, на самом деле меня не слишком волнует бомбардировка, потому что это означает, что мне придется исправить тест.
Я испытываю желание спросить, есть ли способ дать эту подсказку компилятору, но у меня есть ощущение, что это даже уродливее. Существует ли такая подсказка, или я должен просто инициализировать переменные, как я делаю сейчас?