【string.empty,null和""的区别】
5 k2 w# o ` k9 n/ k, w" [* q* g) q: c% w/ ^% o s
string.empty不分配存储空间 _0 h% a$ j k1 h k: x! b
""分配一个长度为空的存储空间
$ o( ^0 v3 u' m4 p) t 所以一般用string.empty
7 f: v# y* l! p0 z
% e7 i$ a. _- |/ u# x! z. w为了以后跨平台,还是用string.empty* k5 m! ~' l- v: _7 q% f# {
2 h) y( a6 @6 w e) q/ o1 ~6 w在 c# 中,大多数情况下 "" 和 string.empty 可以互换使用。比如:$ g* p7 ^1 h7 u @! n& d5 g! k3 \& ~
5 k9 g- [; n# `3 g string s = "";5 \8 e' d2 e, u9 k6 h, z
string s2 = string.empty;
5 e/ m) m k, v" s2 o2 x" `: d7 v z1 o9 |& _4 d9 i
if (s == string.empty) {. z7 p% r k6 n& z6 l x z
//
: h. |; @9 s& ^4 b' f}
5 i' w) _4 k/ c: `, e) z2 e o bif语句成立
1 w& \% l1 y; f- x9 y \& w a; k/ d! x. w% z# l( w
; j) x& k3 a l$ @' c/ ]
判定为空字符串的几种写法,按照性能从高到低的顺序是:% i/ a, s0 b" l$ n
2 @8 h# r7 b k1 t
s.length == 0 优于 s == string.empty 优于 s == ""
# {2 r& o& ^0 h! o0 y( u% |5 g& p9 e ]
m8 q" x/ r7 v
关于string.empty和null的问题是这样的,这两个都是表示空字符串,其中有一个重点是string str1= string.empty和 string str2=null 的区别,这样定义后,str1是一个空字符串,空字符串是一个特殊的字符串,只不过这个字符串的值为空,在内存中是有准确的指向的,string str2=null,这样定义后,只是定义了一个string 类的引用,str2并没有指向任何地方,在使用前如果不实例化的话,都将报错。textbox1.text的值为零长度字符串 ""。 |