以下两行代码比较字符串值是否有任何区别.
string str = "abc";
if(str.Equals("abc"))
Run Code Online (Sandbox Code Playgroud)
和
if("abc".Equals(str))
Run Code Online (Sandbox Code Playgroud)
在第一行中,我在字符串变量上调用equals方法,将其与字符串文字进行比较.第二行反之亦然.它只是编码风格的差异,或者编译器处理这两个语句的方式有所不同.
Ree*_*sey 30
唯一的区别是,在第一种情况下,当你这样做时:
str.Equals("abc")
Run Code Online (Sandbox Code Playgroud)
如果str是null,您将在运行时获得异常.通过做:
"abc".Equals(str)
Run Code Online (Sandbox Code Playgroud)
如果str是的话null,你会得到的false.
Mic*_*ers 10
不同之处在于,在第二个示例中,您永远不会得到a,NullReferenceException因为文字不能为空.
是的,编译器处理语句的方式是不同的。大多数语言中的 String 函数 equals 都遵循相同的准则。这是一个半代码:
override def Equals(that:String):Boolean //Should override Object.Equals
if(that==null) return false
for i from 0 to this.length
if(!this(i).Equals(that(i))) return false
return true
Run Code Online (Sandbox Code Playgroud)
通常,该方法将首先检查 that是一个字符串,并且this和that具有相同的长度。
正如其他人指出的那样,您可以看到,如果是这样,null该方法将返回false。另一方面,该方法是 String 的一部分,因此不能在 上调用null。这就是为什么在您的示例中如果 str 为 null 您将得到一个NullReferenceException.
话虽如此,如果您知道两个变量都是相同长度的非空字符串,则两个语句将同时计算出相同的值。
| 归档时间: |
|
| 查看次数: |
783 次 |
| 最近记录: |