字符串比较没有空检查

pau*_*ons 1 .net string null

我记得很久以前在某个地方读取了一个字符串对象来检查一个字符串(或一个常量等)字符串,一种跳过null检查的方法是:

string a;
// do something
if("some literal string".Equals(a))
    Console.WriteLine("equal");
Run Code Online (Sandbox Code Playgroud)

是优选而不是

string a;
// do something
if(a!=null && a.Equals("some literal string"))
    Console.WriteLine("equal");
Run Code Online (Sandbox Code Playgroud)

跳过检查null.但是现在无法找到有关它的信息; 你对前者有任何异议或担忧吗?

Jon*_*eet 8

您可能正在考虑Java,您需要使用equals它来执行字符串的真值相等性检查; ==只会比较身份的参考.

但是,C#具有运算符重载 - 并且为了相等而string重载==.所以写得很好:

if (text == "target value")
Run Code Online (Sandbox Code Playgroud)

==操作者处理null该比较的任一个(或两者)方面:

  • 如果双方都为空,则结果为真
  • 如果正好一边为null,则结果为false
  • 否则,比较字符串的序数相等性

但请注意,仅当两个表达式的编译时类型都使用时才会使用重载string.例如,如果你有:

object o = new String("foo".ToCharArray());
if (o == "foo")
Run Code Online (Sandbox Code Playgroud)

...然后将比较引用而不是使用重载运算符.