日期:2014-05-18  浏览次数:20471 次

C#基础疑问?
我想请问下:
        有很多代码
如下:
判断为Null时用
if(***==NULL)
也有人用
if(String.IsNullOrEmpty(**))

是否相等时
String   A=null;
if(A== "a ")
有人用
if(A.Equals( "a "))
 
他们有什么区别   哪个写法更好!~!!



------解决方案--------------------
效果都一样,只是分别采用运算符和代码实现而已,在效率上代码要高于运算符
------解决方案--------------------
代码风格
------解决方案--------------------
看你的习惯了啊
------解决方案--------------------
Equals是对象的一种比较。
==只是比较运算符

IsNullOrEmpty,Equals都是某类对象的方法。
即Object.IsNullOrEmpty,Object.Equals
------解决方案--------------------
Object.Equals 方法
确定两个 Object 实例是否相等。

使用 System.String.Length 属性或 System.String.IsNullOrEmpty(System.String) 方法比较字符串要比使用 Equals 的速度快得多。这是因为与 IsNullOrEmpty 或者为检索 Length 属性值并将其与零比较所需执行的指令数相比,Equals 执行更多的 MSIL 指令。

您应该注意,Equals 和 Length == 0 对于空字符串的行为表现不同。如果您试图获取空字符串的 Length 属性的值,公共语言运行库将引发 System.NullReferenceException。如果比较空 (null) 字符串和空 (empty) 字符串,则公共语言运行库不会引发异常;比较将返回 false。对空字符串进行测试不会显著影响这两种方法的相对性能。当目标为 .NET Framework 2.0 时,使用 IsNullOrEmpty 方法。否则,在可能的情况下请使用 Length == 比较。

------解决方案--------------------
很多的.