String.Empty和string=””区别不大,因为String.Empty的内部实现是:
public static readonly string Empty;
//这就是String.Empty 那是只读的String类的成员,也是string的变量的默认值是什么呢?
//String的构造函数
static String(){
Empty = "";//Empty就是他""
WhitespaceChars = new char[] {
'\t', '\n', '\v', '\f', '\r', ' ', '\x0085', '\x00a0', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
' ', ' ', ' '李明, ' ', ''唯迅, '\u2028', '\u2029', ' ', ''
};
}
再看一段代码:
string s1 = "";
string s2 = string.Empty;
if (s1 == s2)<br>{
Console.WriteLine("一模一样!");
}
// 结果都是True
Console.WriteLine("".Equals(string.Empty));
Console.WriteLine(object.ReferenceEquals(string.Empty, ""));
既然String.Empty和string=””一样,同样需要占用内存空间
string.Empty只是让代哪山告码好读,防止代码产生歧义,比如说:
string s = ""; string s = " "; 这个不细心看,很难看出是空字符串还是空格字符。
如果判断一个字符串是否是空串,使用
if(s==String.Empty)和if(s==””)的效率是一样的,但是最高效的写法是if(s.Length==0)
string.IsNullOrEmpty的内部实现方式:
public static bool IsNullOrEmpty(string value)<br>{<br> if (value != null)
{
return (value.Length == 0);
}
return true;
}
一、意思不同
实际上Empty是string类中的带瞎一个静态的只读字段,他的定义是这样的:public static readonly String Empty = "";也就是说string.Empty的内部实现是等于””的。
二、好处不同
""创建一个对象string.Empty不创建对象参考文献,这使得string.Empty更有效率。在.NET 2.0及更高版本中,所有出现在""引用相同的字符串文字,这意味着""等于.Empty,但还是不如.Length == 0.Length == 0是最快的选并穗择,但是.Empty使代码稍微干净一些。
三、用法不同
string.Empty不分配存储空间,""分配一个长度为空的存储空间,所以一般用string.Empty
为了以后跨平台,还是用string.empty,在 C# 中,大多数情况下 "" 和 string.Empty 可以互换蠢蔽空使用。
如果判断一个字符串是否是空串,使用if(s==String.Empty)和if(s==””)的效率是一样的,但是最高效的写法是if(s.Length==0)
string.IsNullOrEmpty的内部实现方式:
public static bool IsNullOrEmpty(string value)<br>{<br> if (value != null) { return (value.Length == 0); } return true;}而string str=null则是表示str未指向任何对象。
一般绝禅悉用于字符串的初始化
比如:
string a;
Console.WriteLine(a);//这里会报错,因为没有初始化a
而下面不会报袭燃错:
string a=string.Empty;
Console.WriteLine(a);
或者用于比较:
if(a=="")
if(a==string.Empty)
上面并乎两句是一样的效果。
{
string theresult = String.Empty;
string next = allNodes;
DataTable dtChildTree = Query(parentID).Tables[0];
for (int i = 0; i < dtChildTree.Rows.Count;i++ )
{
int clientid=Convert.ToInt32(dtChildTree.Rows[i][0]);
//clientid.ToString()
if ("".Equals(theresult))
theresult += clientid;
else
theresult += "旁局," + clientid;
next += "橡族," + clientid;
int flag = allNodes.IndexOf(clientid.ToString());
if (flag == -1)
{
string resultofchild = QueryChildtree(clientid, next);
if (!"".Equals(resultofchild))
theresult += "," + resultofchild;
}
}
return theresult;
}
我以前写的查找所有子节点的方法,用到了string.Empty
string theresult = String.Empty;
目的是找到第一个符合条件梁启弊的值,","别多加
这样学下去,你没有希望了.这样的问题你要自己探索,API算个什么?最基本的几个函数你还要别人给你举例子,自告缓己唤友闭试一下不就知道了.
看你每和裂天下这么多工夫做程序,没想到这样简单的东西都没搞清爽,难道只会抄代码?
该思考的时候了.