Рассмотрим этот код:
var str = (string)null;
При написании кода это мой код IL
:
IL_0001: ldnull
И IL
имеет оператор Cast, но:
var test = (string) new Object();
Код IL
:
IL_0008: castclass [mscorlib]System.String
Так что литье null
в string
было проигнорировано.
Почему компилятор разрешил мне использовать null
для определенного типа?