Anders Hejlsberg, "C# père", il a tout simplement parlé sur ce point dans son Computerworld interview:
Par exemple, dans le système de type, nous n'avons pas de séparation entre la valeur et les types référence et de la valeur null de types. Cela peut sembler un peu bancale ou un peu technique, mais en C# les types de référence peut être null, tels que des chaînes, mais des types de valeur ne peut pas être null. C'est sûr qu'il serait bien d'avoir eu non nullable types de référence, de sorte que vous pouvez déclarer que " cette chaîne ne peut jamais être nulle, et je veux que vous le compilateur de vérifier que je ne peux jamais frappé un pointeur null.
50% des bugs que les gens courent dans aujourd'hui, le codage avec C# dans notre plate-forme, et la même chose est vraie de Java, sont probablement référence null exceptions. Si on avait eu un fort système de type qui vous permettra de dire que "ce paramètre ne peut jamais être nulle, et vous compilateur veuillez vérifier qu'à chaque appel, en faisant l'analyse statique de code". Puis nous avons pu étouffer les classes de bugs.
Cyrus Najmabadi, un ancien ingénieur de conception logiciel sur l'équipe C# (qui travaille maintenant à Google) de discuter sur le sujet sur son blog: (1er, 2e, 3e, 4e).
Il semble que le plus grand obstacle à l'adoption de la non-types nullables est que la notation pourrait déranger les programmeurs et habitudes de la base de code. Quelque chose comme 70% des références de C# les programmes sont susceptibles de se retrouver comme non nullable.
Si vous voulez vraiment avoir non nullable type de référence en C# vous devriez essayer d'utiliser Spec#
qui est un C# extension de permettre l'utilisation de "!" un non nullable signe.
static string AcceptNotNullObject(object! s)
{
return s.ToString();
}