当前位置:编程学习 > C#/ASP.NET >>

C#编程的问题55

string.empt和null或""相同吗?
答案:string.Empty就相当于"" 
一般用于字符串的初始化
比如:
string a;
Console.WriteLine(a);//这里会报错,因为没有初始化a
 
而下面不会报错:
string a=string.Empty;
Console.WriteLine(a);
 
或者用于比较:
if(a=="")
if(a==string.Empty)
上面两句是一样的效果。
 
      string.Empty不分配存储空间
       ""分配一个长度为空的存储空间  
      所以一般用string.Empty

为了以后跨平台,还是用string.empty
 
在 C# 中,大多数情况下 "" 和 string.Empty 可以互换使用。比如:
 string s = "";
 string s2 = string.Empty;
 
if (s == string.Empty) {
 //
}
if语句成立
 

String.Empty和Null,这两个都是表示空字符串,string str1= String.Empty,这样定义后,str1是一个空字符串,空字符串是一个特殊的字符串,只不过这个字符串的值为空,在内存中是有准确的指向的 ,string str2=null,这样定义后,只是定义了一个string 类的引用,str2并没有指向任何地方,在使用前如果不实例化的话,都将报错 。textBox1.Text的值为零长度字符串 ""。
 
判定为空字符串的几种写法,按照性能从高到低的顺序是:
 s.Length == 0      优于 s == string.Empty      优于 s == ""
 
判断字符串是否为空最好的方法就是    s.Length==0 !


C#中的空值的判断较麻烦,不象在VB6中那么简单,这些各种空值的判断和理解对不熟悉的人来说,可能很麻烦,现就我在使用过程中的一点体会和大家共同分享。

(1)NULL
 
          null 关键字是表示不引用任何对象的空引用的文字值。null 是引用类型变量的默认值。那么也只有引用型的变量可以为NULL,如果 int i=null,的话,是不可以的,因为Int是值类型的。
 
(2)DBNULL
 
      DBNull在DotNet是单独的一个类型,该类只能存在唯一的实例,DBNULL.Value,DBNull唯一作用是 可以表示数据库中的字符串,数字,或日期,为什么可以表示原因是DotNet储存这些数据的类(DataRow等)都是以 object 的形式来储存数据的。对于 DataRow , 它的 row[column] 返回的值永远不为 null , 要么就是具体的为column 的类型的值 。 要么就是 DBNull 。 所以 row[column].ToString() 这个写法永远不会在ToString那里发生NullReferenceException。DBNull 实现了 IConvertible 。 但是,除了 ToString 是正常的外,其他的ToXXX都会抛出不能转换的错误。
 
(3)""和String.Empty
 
这两个都是表示空字符串,其中有一个重点是string str1="" 和 string str2=null 的区别,这样定义后,str1是一个空字符串,空字符串是一个特殊的字符串,只不过这个字符串的值为空,在内存中是有准确的指向的,string str2=null,这样定义后,只是定义了一个string 类的引用,str2并没有指向任何地方,在使用前如果不实例化的话,都将抱错。
 
(4)Convert.IsDBNull()
 
     Convert.IsDBNull()返回有关指定对象是否为 DBNull 类型的指示,即是用来判断对象是否为DBNULL的。其返回值是True或Flase。
 
好了说了这么多,也不知道说明白了没有,其实这些广义上的"空值"理解了后,还是有很大的区别的,甚至根本就没有关系。完全是两个概念。


本文来自CSDN博客,转载请标明出处: http://blog.csdn.net/yycc2008/archive/2009/06/01/4233350.aspx

string.empty和“”相同
但null表示没有,不是空。所以跟它们不一样
不相同...

一,从数据类型来看,string.empty 是string 类中的一个属性,null是一个object类型,代表空地址,或任意地址;" "是一个字符串,字符串的内容是空格。

二,string.empty 代表是一个字符串,其内容为空,而" "内容是空格,null表示,你的引用类型在堆上不分配空间,也就是说你的引用对象,未设置(指向)到实例

上一个:C#三层架构问题
下一个:怎样用c#做闹钟?

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,