leo*_*ora 10 c# string string-comparison
我有以下代码(因为我试图检测字段的更改)
if (person.State != source.State)
{
//update my data . .
}
Run Code Online (Sandbox Code Playgroud)
问题是我遇到的情况是person.State为NULL而source.State为"",因此返回true.
如果一个为null而另一个是空字符串,我想将它们视为相等并且不更新我的数据.这样做最干净的方法是什么?我是否需要创建自己的Comparer对象,因为这似乎是一个普遍的问题
小智 20
如果你真的需要,你可以这样做:
if ((person.State ?? string.Empty) != (source.State ?? string.Empty))
{
// ...
}
Run Code Online (Sandbox Code Playgroud)
但是,根据您的需要,更好的解决方案可能是将person.State
属性修改为永不返回空值.
public class Person
{
string _state = string.Empty;
public string State
{
get { return _state; }
set { _state = value ?? string.Empty; }
}
}
Run Code Online (Sandbox Code Playgroud)
Mar*_*ell 12
就个人而言,我会对上游进行消毒/规范化,但如果我必须在这里进行:
// check different, treating null & "" as equivalent
if ((person.State ?? "") != (source.State ?? ""))
Run Code Online (Sandbox Code Playgroud)
虽然其他答案都很好,但我会将它们引入自己的方法,以使读者更清楚:
public static bool StatesEqual(string first, string second)
{
return first ?? "" == second ?? "";
}
Run Code Online (Sandbox Code Playgroud)
如果您在多个位置比较这些状态,或者允许您处理其他奇怪的情况,这将是有益的.(示例可能是将其更改为不区分大小写,或者如果两个状态在文本上不同,但是一个是另一个的缩写,即您希望"WI"等于"Wisconsin".
归档时间: |
|
查看次数: |
4716 次 |
最近记录: |