2011-10-11 57 views
1

大家好所有的SO用户我对理解null和Empty都没有什么困惑。 我知道null是特殊情况,它不等于它自己。我想知道如何确定它为空,在什么基础上你告诉它是空的,并且同样为空也如何区分空或空?按照什么标准处理空值和空值?

  1. 它是基于内存分配还是什么?
  2. 如果接下来如何将内存分配给null。
  3. 如果它是空的,那么什么crieteria适合它是“空”。

只是我想知道编译器是如何知道它是NULL还是Empty。

+2

“null不等于自己”,只适用于SQL,而不是C# –

回答

7

null是一种特殊的引用,意思是“不引用任何”

空只适用于集合(和一个字符串是字符的集合)。这意味着有一个有效的集合,但它不包含(0)元素。

当返回一个集合时,最好返回一个空集合而不是null。

收到集合时,请确定是否应将null视为空集合。这要看具体情况,协议和作出的承诺等

我知道空是特例,这不等于自己

并非完全如此。 null == null总是如此。

+0

好的。还有一件事你能告诉我编译器是如何知道它是空还是空?它在哪个基础上区分了两者。 –

+0

没什么特别的......'null'是一个特殊的(预先定义的)引用。一个空集合被一个有效的非空引用所引用,并具有Count == 0 –