以下两行代码与字符串值进行比较有什么不同.
string str = "abc"; if(str.Equals("abc"))
和
if("abc".Equals(str))
在第一行我调用字符串变量的equals方法来与字符串文字进行比较.第二行反之亦然.它只是编码风格的区别,或者编译器处理这两个语句的方式有所不同.
解决方法
是的,编译器处理语句的方式是不同的.大多数语言中String的函数等于相同的准则.这是一个半码:
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
通常,该方法将检查该字符串是否为IS,并且该长度与该长度相同.
如其他人所指出的那样,如果该值为null,那么该方法返回false.另一方面,该方法是String的一部分,因此不能在null上调用.这就是为什么在你的exampleif中,str为null,你会得到一个NullReferenceException.
话虽如此,如果你知道这两个变量是非空字符串的长度相同,两个语句都将同时评估.