#c# #compiler-construction #programming-languages #null
#c# #компилятор-конструкция #программирование-языки #null
Вопрос:
Привет всем пользователям SO, у меня небольшая путаница с пониманием null и Empty. Я знаю, что null — это особый случай, который не равен самому себе. Я хочу знать, как определить, что оно равно null, на каком основании вы говорите, что оно равно null, и то же самое для empty также
- Это основано на распределении памяти или что?
- Если тогда как память, выделенная для null.
- Если он пустой, то какой критерий подходит для того, чтобы он был «ПУСТЫМ».
Просто я хочу знать, как компилятор узнает, что это NULL или Empty.
Комментарии:
1. «null не равно самому себе», это относится только к SQL, а не к C#
Ответ №1:
null
это специальная ссылка, которая означает «не ссылаться ни на что»
Empty применяется только к коллекциям (а строка — это коллекция символов). Это означает, что существует допустимая коллекция, но она не содержит (0) элементов.
При возврате коллекции обычно лучше возвращать пустую коллекцию вместо null.
При получении коллекции решите null
, следует ли рассматривать ее как пустую коллекцию. Это зависит от ситуации, достигнутых соглашений и обещаний и т. Д.
я знаю, что null — это особый случай, который не равен самому себе
Не совсем верно. null == null
всегда верно.
Комментарии:
1. ОК. еще одна вещь, можете ли вы рассказать мне, как компилятор узнает, является ли оно null или empty? на каком основании это различает оба.
2. Ничего особенного …
null
это специальная (предопределенная) ссылка. На пустую коллекцию ссылается допустимая ненулевая ссылка и имеет Count==0