我记得很久以前在某个地方读过一个字符串对象来检查一个字符串(或一个常量等)字符串,跳过null
检查的方法是:
string a;
// do something
if("some literal string".Equals(a))
Console.WriteLine("equal");
是首选而不是
string a;
// do something
if(a!=null && a.Equals("some literal string"))
Console.WriteLine("equal");
跳过检查null
。但是现在无法找到有关它的信息;你对前者有异议或担忧吗?
答案 0 :(得分:8)
您可能正在考虑使用Java,需要使用equals
以便对字符串执行真正的值相等性检查; ==
只会比较身份参考。
string
重载==
表示相等。所以写得很好:
if (text == "target value")
==
运算符在比较的任一侧(或两侧)处理null
:
但请注意,仅当两个表达式的编译时类型为string
时才会使用重载。例如,如果你有:
object o = new String("foo".ToCharArray());
if (o == "foo")
...然后将比较引用而不是使用重载运算符。
答案 1 :(得分:1)
我更喜欢使用:
if (String.Equals("Value", a))
比较两个都可以null
的变量时,它特别方便 - 使用这个静态方法也可以涵盖这种情况。