Возможный дубликат:
С# в порядке со сравнением типов значений с нулем
Поведение, описанное ниже, специфично только для .net-3.5
Здравствуйте,
Я просто столкнулся с самым удивительным поведением в компиляторе С#,
У меня есть следующий код:
Guid g1 = Guid.Empty;
bool b1= (g1 == null);
Ну, Guid не имеет значения NULL, поэтому он никогда не может быть равен null. сравнение, которое я делаю в строке 2 , всегда возвращает false.
Если вы делаете то же самое для целого числа, компилятор выдает предупреждение, говорящее, что результат всегда будет ложным:
int x=0;
bool b2= (x==null);
Мой вопрос: Почему компилятор позволяет сравнивать Guid с null?
По моим сведениям, он уже знает, что результат всегда неверен.
Является ли встроенное преобразование, выполненное таким образом, что компилятор принимает значение null, является возможным значением?
Я что-то пропустил здесь?
Спасибо