Bra*_*itz 25 .net c# string null equality
我会经常使用此代码来比较字符串:
if(!string.IsNullOrEmpty(str1) && str1.Equals(str2)){
//they are equal, do my thing
}
Run Code Online (Sandbox Code Playgroud)
这首先处理null case等.
有没有更简洁的方法来进行字符串比较,可能只有一个方法调用可以处理可能的空值?我只是想知道如果测试值为null则字符串不相等.
(我有dejavu,我之前可能已经问过这个问题,如果是这样,我道歉)
更新:在我的情况下,str2是一个已知的好字符串,因此我不需要将其检查为null.str1是"未知"字符串,可能为null,所以我想在str1 为空的情况下说"str1不等于str2" ...
SLa*_*aks 36
与Java不同,C#字符串覆盖==运算符:
if (str1 == str2)
Run Code Online (Sandbox Code Playgroud)
如果您想要不区分大小写的比较:
if (String.Equals(str1, str2, StringComparison.OrdinalIgnoreCase)
Run Code Online (Sandbox Code Playgroud)
das*_*ght 15
如果您不希望将两个null字符串视为彼此相等,则您的代码是最佳的.
另一方面,如果您希望将null值视为彼此相等,则可以使用
object.Equals(str1, str2)
Run Code Online (Sandbox Code Playgroud)
对于一个更"对称"的方法,它也处理null价值观.
小智 11
我知道这已有几年了,我认为来自dasblinkenlight的解决方案在功能上非常适合您的要求.但是出于可读性原因,我更喜欢这段代码:
String.Equals(str1, str2)
Run Code Online (Sandbox Code Playgroud)
没有内置方法可以执行此操作,但您可以创建一个扩展方法来封装它。
public static StringExtensions
{
public static Boolean IsNotNullAndEquals(this string str1, string str2)
{
return !string.IsNullOrEmpty(str1) && str1.Equals(str2)
}
}
Run Code Online (Sandbox Code Playgroud)
然后像这样使用它:
str1.IsNotNullAndEquals(str2);
Run Code Online (Sandbox Code Playgroud)
在我看来,命名将是你最难的事情......因为你需要传达你只是空检查str1。当用作扩展方法时,它读起来相当好,但如果用作常规静态方法,则它也不能传达这一点。