string.Empty 和 并不总是可以互换的
生活随笔
收集整理的這篇文章主要介紹了
string.Empty 和 并不总是可以互换的
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
在 C# 中,大多數(shù)情況下 "" 和 string.Empty 可以互換使用。比如:
string?s?=?"";
string?s2?=?string.Empty;
if?(s?==?string.Empty)?{
??//?
}
但是我發(fā)現(xiàn)有一種情況下只能是用常數(shù)形式: "", 而不能使用 string.Empty 這個靜態(tài)變量。就是在標簽(Attribute) 的構(gòu)造器里面:
這個代碼是正確的:
[Default("")]
public?string?Name?{
??get?{?return?name;?}
??set?{?name?=?value;?}
}
這個是錯誤的,無法通過編譯:
[Default(string.Empty)]
public?string?Name?{
??get?{?return?name;?}
??set?{?name?=?value;?}
}
錯誤信息是:
error CS0182: 屬性參數(shù)必須是常數(shù)表達式、typeof 表達式或數(shù)組創(chuàng)建表達式
其他地方我并未發(fā)現(xiàn)類似的例子。
順便提一下,判定為空字符串的幾種寫法,按照性能從高到低的順序是:
s.Length == 0? 優(yōu)于 s == string.Empty? 優(yōu)于 s == ""?
這個結(jié)論來自于:
http://www.cnblogs.com/allenlooplee/archive/2004/11/11/62805.html
string?s?=?"";
string?s2?=?string.Empty;
if?(s?==?string.Empty)?{
??//?
}
但是我發(fā)現(xiàn)有一種情況下只能是用常數(shù)形式: "", 而不能使用 string.Empty 這個靜態(tài)變量。就是在標簽(Attribute) 的構(gòu)造器里面:
這個代碼是正確的:
[Default("")]
public?string?Name?{
??get?{?return?name;?}
??set?{?name?=?value;?}
}
這個是錯誤的,無法通過編譯:
[Default(string.Empty)]
public?string?Name?{
??get?{?return?name;?}
??set?{?name?=?value;?}
}
錯誤信息是:
error CS0182: 屬性參數(shù)必須是常數(shù)表達式、typeof 表達式或數(shù)組創(chuàng)建表達式
其他地方我并未發(fā)現(xiàn)類似的例子。
順便提一下,判定為空字符串的幾種寫法,按照性能從高到低的順序是:
s.Length == 0? 優(yōu)于 s == string.Empty? 優(yōu)于 s == ""?
這個結(jié)論來自于:
http://www.cnblogs.com/allenlooplee/archive/2004/11/11/62805.html
轉(zhuǎn)載于:https://www.cnblogs.com/RChen/archive/2005/09/13/236073.html
總結(jié)
以上是生活随笔為你收集整理的string.Empty 和 并不总是可以互换的的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 线程 回调函数_java 回调
- 下一篇: jQuery 属性和CSS