Мне кажется, на самом деле нет никакой гарантии, что ненулевая переменная никогда не будет иметь значение null. Представьте, что у меня есть класс с одним свойством, которое не может быть обнуляемым:
public class Foo
{
public Foo(string test)
{
Test = test;
}
public string Test {get;set;}
}
Теперь может показаться, что теперь оно не может быть нулевым. Но если мы ссылаемся на этот класс с другой библиотекой, которая не использует обнуляемый контекст, ничто не мешает ему отправлять туда ноль.
Это правильно или есть некоторые проверки во время выполнения, а может быть, которые это обеспечивают?
public void Foo(string test){...}
илиpublic Foo(string test){...}
?