Я только что начал экспериментировать с CodeContracts в.NET 4 на существующем проекте среднего размера, и я удивлен, что статическое средство проверки дает мне предупреждения времени компиляции о следующей части кода:
public class Foo
{
private readonly List<string> strs = new List<string>();
public void DoSomething()
{
// Compiler warning from the static checker:
// "requires unproven: source != null"
strs.Add("hello");
}
}
Почему является CodeContracts статическим средством проверки, жалующимся на strs. Добавить (...) строку? Нет никакого возможного пути к strs для пустого указателя, правильно? Я делаю что-то не так?