Me parece que realmente no hay garantía de que una variable no anulable nunca tenga nulo. Imagine que tengo una clase que tiene una propiedad que no es anulable:
public class Foo
{
public Foo(string test)
{
Test = test;
}
public string Test {get;set;}
}
Ahora eso puede parecer que ahora no puede ser nulo. Pero si hacemos referencia a esta clase con otra biblioteca que no utiliza contexto anulable, nada impide que envíe nulo allí.
¿Es correcto o hay algunas comprobaciones de tiempo de ejecución que quizás lo aseguren?
public void Foo(string test){...}
opublic Foo(string test){...}
?