2011-10-11 109 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 –