How to compare nullable types?
我有几个地方需要比较2个(可以为空)值,看看它们是否相同。
我认为框架中应该有一些东西来支持这一点,但是找不到任何东西,所以应该有以下内容:
1 2 3 4 | public static bool IsDifferentTo(this bool? x, bool? y) { return (x.HasValue != y.HasValue) ? true : x.HasValue && x.Value != y.Value; } |
那么,在代码中,我有
然后,对于可以为空的int、可以为空的double等,我有类似的方法。
有没有一种更简单的方法来查看两个可以为空的类型是否相同?
更新:
原来这个方法存在的原因是因为代码是从vb.net转换而来的,其中nothing=nothing返回false(与c比较,其中null=null返回true)。vb.net代码应该使用
C支持"提升"运算符,因此如果编译时已知类型(本例中为
1 | return x != y; |
如果你需要仿制药,那么
1 | return !EqualityComparer<T>.Default.Equals(x,y); |
但是,请注意,这两种方法都使用"
1 | return x == null || x != y; |
EDOCX1?0?
1 | if (x.Equals(y)) |
可以在System.Object上使用static equals方法:
1 | var equal = object.Equals(objA, objB); |
只需使用
使用比较:
http://msdn.microsoft.com/en-us/library/dxxt7t2a.aspx