2011-06-10 61 views
0

可能重複:
In C#, should I use string.Empty or String.Empty or 「」 ?可以使用string.Empty有害嗎?

我只是偶然在下面的句子中this question/answer

隨着C#2.0編譯器,有 非常少點反正String.Empty 反正其實在很多情況下它是 a因爲編譯器 可以內聯一些對""的引用,但 不能與String.Empty做同樣的操作。

這句話是真的嗎?因此,我們是否應該始終使用""而不是string.Empty

請注意:我不問任何編碼styleguide(這是更容易閱讀)。我想知道是否有功能差異(例如內聯)。

+4

http://stackoverflow.com/questions/263191/in-c-should-i-use-string-empty-or-string-empty-or – Prisoner 2011-06-10 14:00:12

+0

我不認爲有必要區分或擔心關於它的任何方式。考慮問題是浪費工程/思考時間 - 兩種方式都沒有影響。 (我的意思是:「沒關係」)。它有害嗎?當然不是,這不是很明顯嗎? – 2011-06-10 14:01:00

+0

如果你仔細看看答案(在該鏈接上),你會注意到生成的IL幾乎相同,生成的程序集完全相同。 – BrunoLM 2011-06-10 14:05:32

回答

0

你應該幾乎總是使用一個更容易閱讀的。潛力在實踐中很少會起作用。

IMO ""更容易/更清晰地閱讀。但其他人更喜歡String.Empty。所以這主要是一個風格問題。

你引用的表演部分似乎是合理的。 ""是一個編譯時常量,將被實施。 String.Empty是一個靜態只讀字段。除非編譯時C#編譯器程序員特別小心地將String.Empty替換爲"",否則在某些罕見的情況下可能會稍微慢一些。 ""的所有用途將共享相同的實例,我期望String.Empty指向同一個實例。

如果您將""與其他常量組合在一起,編譯器會理解它可能在編譯時計算整個表達式。它可能不會這樣做,String.Empty這是不固定的。但我想不出一個在實踐中有意義的例子。

例子:

string s = ""+"A"+""+"B"+""; 

可能會快於:

string s = string.Empty+"A"+string.Empty+"B"+string.Empty; 

但是,當然,任何理智的人會寫:

string s = "AB"; 

但它可能是C#程序員加入String.Empty的特殊情況,用""代替它,在這種情況下根本沒有差別。

+0

注意:問題不在於可讀性。 – M4N 2011-06-10 14:16:23

+0

你在編寫關於可讀性的部分之後編輯了它。 – CodesInChaos 2011-06-10 14:19:20

+0

是的,這就是爲什麼我在這裏添加註釋以及:-)問題只是關於引用的聲明。 – M4N 2011-06-10 14:21:42

3

這句話是真的嗎?

實習點是分享參考以節省內存和減少比較時間(參考比較快速)。由於String.EmptyString類中的static readonly字段,因此它的所有用途已經共享相同的引用。因此,String.Empty已被有效實施(請注意,我說「有效」並且特別注意,它並未在您的裝配中使用"")。

因此,我們應該總是使用""而不是string.Empty

我個人認爲String.Empty更具可讀性。使用你喜歡的。如果存在任何性能差異,則嚴重不太可能成爲瓶頸。

+0

我也傾向於使用'String.Empty'。如果沒有其他的東西,它可以防止來自''''和'「」'的細微瑕疵快速瀏覽。 – 2011-06-10 14:05:28

+0

實習內容是否相同或與內聯相關? – M4N 2011-06-10 14:14:25

+1

@ M4N:我懷疑那句話的作者是「實習」。 – jason 2011-06-10 15:54:01

1
Console.WriteLine (ReferenceEquals ("", string.Empty) ? "Same Reference" : "Different Reference"); 
// Prints "Same Reference" 

看起來它是純粹的偏好(至少在微軟版本的CLR上)。有誰知道MONO?