string.Empty在什么情况下使用!

wosizy 2009-06-22 02:53:53
比如说lst_areaID.selectedValue!="" 和 lst_areaID.selectedValue!=string.Empty
问!在什么情况下使用后者.
...全文
282 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
hiletin 2010-05-27
  • 打赏
  • 举报
回复
[Quote=引用 23 楼 dolphin_sunny 的回复:]

关于String.Empty和Null的问题是这样的,这两个都是表示空字符串,其中有一个重点是string str1= String.Empty和 string str2=null 的区别,这样定义后,str1是一个空字符串,空字符串是一个特殊的字符串,只不过这个字符串的值为空,在内存中是有准确的指向的,string str2=null,这样定义后,只是定义了一个string 类的引用,st……
[/Quote]

同意 ojlovecd 所说!有些人就是误人子弟!大部分软件系统,都对字符串进行特殊处理:相同的字符串序列,进行固定存储。也可以说在这些系统中,字符串是“常量”,凡是对字符串的“修改”操作,都产生一个新字符串,旧的字符串不变。这称为字符串的“不可变性”。string.Empty 与 "" 引用同一块内存,故而它们是等价的,只不过 "" 更为简短。
我姓区不姓区 2009-06-22
  • 打赏
  • 举报
回复
[Quote=引用 23 楼 dolphin_sunny 的回复:]
关于String.Empty和Null的问题是这样的,这两个都是表示空字符串,其中有一个重点是string str1= String.Empty和 string str2=null 的区别,这样定义后,str1是一个空字符串,空字符串是一个特殊的字符串,只不过这个字符串的值为空,在内存中是有准确的指向的,string str2=null,这样定义后,只是定义了一个string 类的引用,str2并没有指向任何地方,在使用前如果不实例化的话,都将报错。

在 C# 中,大多数情况下 "" 和 st…
[/Quote]

呵呵,你不觉得这段话和你22楼的是自相矛盾的吗
我姓区不姓区 2009-06-22
  • 打赏
  • 举报
回复
to 19,20楼
由于看到了太多的以讹传讹,所以最近我对于这种容易误导别人的话都会及时提出的,并没有什么恶意,也是希望说错的人能及早纠正过来

至于21,22楼,我奉劝你们最好还是静下心来好好看看基础的东西,我就不说太多了
dolphin_sunny 2009-06-22
  • 打赏
  • 举报
回复
关于String.Empty和Null的问题是这样的,这两个都是表示空字符串,其中有一个重点是string str1= String.Empty和 string str2=null 的区别,这样定义后,str1是一个空字符串,空字符串是一个特殊的字符串,只不过这个字符串的值为空,在内存中是有准确的指向的,string str2=null,这样定义后,只是定义了一个string 类的引用,str2并没有指向任何地方,在使用前如果不实例化的话,都将报错。

在 C# 中,大多数情况下 "" 和 string.Empty 可以互换使用。
比如:
string name1 = "";
string name2= string.Empty;
if (name1== string.Empty) {
// 略
}
if语句成立
判定为空字符串的几种写法,按照性能从高到低的顺序是:
name1.Length == 0 优于 name1 == string.Empty 优于 name1 == ""
dolphin_sunny 2009-06-22
  • 打赏
  • 举报
回复
string.Empty 不分配存储空间
"" 分配一个长度为空的存储空间
所以一般用string.Empty
为了以后跨平台,还是用string.empty
Ricercar 2009-06-22
  • 打赏
  • 举报
回复
string.Empty是string类的静态常量
""是会生成一个string对象的
maddemon 2009-06-22
  • 打赏
  • 举报
回复
To ojlovecd:既然是交流的帖子 就没必要非得针对楼主的问题来交流

开始大家就提到是用来判断是否为空的, 自然要拿出IsNullOrEmpty说

你不是也针对我的错误的地方指明了么 ,这就是交流。
miniraul 2009-06-22
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 ojlovecd 的回复:]
引用 14 楼 Ricercar 的回复:
string.Empty不占内存,而且从移植性来说string.Empty比""好,因为有些语言的字符串是单引号的
其他没区别string.Empty=""



纯属误人子弟
[/Quote]

大家都是来交流的,犯不上直接否定别人的观点吧
wosizy 2009-06-22
  • 打赏
  • 举报
回复
多谢楼上的指导·· 小弟 这就结贴给分去
我姓区不姓区 2009-06-22
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 Ricercar 的回复:]
string.Empty不占内存,而且从移植性来说string.Empty比""好,因为有些语言的字符串是单引号的
其他没区别string.Empty=""
[/Quote]

纯属误人子弟
wosizy 2009-06-22
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 ojlovecd 的回复:]
看来楼主还是不死心,就是不肯相信我说的话,以下代码证明string.Empty和""是完全一样的:

C# code
Console.WriteLine("".Equals(string.Empty));
Console.WriteLine(object.ReferenceEquals(string.Empty, ""));
[/Quote]



不是不相信你说的话啊·· 我只是想更深的理解
我姓区不姓区 2009-06-22
  • 打赏
  • 举报
回复
楼主只是问string.Empty和""的区别而已,我就不明白2,8,10楼的为什么会把string.IsNullOrEmpty给扯进来,
至于12楼说的“赋值的时候我们赋值为String.Empty 就不需要另外开辟一个""的内存空间应用了”
这是不对的,如果之前没有出现过空字符串的话,那你在赋值的时候赋string.Empty一样要开辟一个内存空间
Ricercar 2009-06-22
  • 打赏
  • 举报
回复
string.Empty不占内存,而且从移植性来说string.Empty比""好,因为有些语言的字符串是单引号的
其他没区别string.Empty=""
我姓区不姓区 2009-06-22
  • 打赏
  • 举报
回复
看来楼主还是不死心,就是不肯相信我说的话,以下代码证明string.Empty和""是完全一样的:

Console.WriteLine("".Equals(string.Empty));
Console.WriteLine(object.ReferenceEquals(string.Empty, ""));

maddemon 2009-06-22
  • 打赏
  • 举报
回复
这样看来String.Empty并非是在判断为空的时候使用,而是赋值的时候使用,嗯嗯。
赋值的时候我们赋值为String.Empty 就不需要另外开辟一个""的内存空间应用了,直接用String.Empty
maddemon 2009-06-22
  • 打赏
  • 举报
回复
[Code=C#]
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', ' ', ''
};
}


[/Code]

所以我们判断是时候用 String.IsNullOrEmpty 假如他有null的话,确认不为null的时候我们用 str.Length==0
maddemon 2009-06-22
  • 打赏
  • 举报
回复
[Code=C#]
public static bool IsNullOrEmpty(string value)
{
if (value != null)
{
return (value.Length == 0);
}
return true;
}
[/Code]
我姓区不姓区 2009-06-22
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 lincnl 的回复:]
string.IsNullOrEmpty是判断null和"",String.Empty(strValue)和strValue==""是一个概念,之所以要有Empty()方法,就是因为.net的面向对象的思路,该方法是String对象的方法,而strValue==""则是过程式编程的风格。
[/Quote]

什么时候string.Empty变成方法了……
lincnl 2009-06-22
  • 打赏
  • 举报
回复
string.IsNullOrEmpty是判断null和"",String.Empty(strValue)和strValue==""是一个概念,之所以要有Empty()方法,就是因为.net的面向对象的思路,该方法是String对象的方法,而strValue==""则是过程式编程的风格。
kkun_3yue3 2009-06-22
  • 打赏
  • 举报
回复
赋默认值的时候,判断为空的时候
加载更多回复(6)

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧