2017-02-28 23 views
1

我们的应用程序需要int?变量。我经常检查两个以确保不为零而不是0,并且它确实变得冗长。int?版本可用于String.IsNullOrWhiteSpace

是否有int?

的开箱即用的版本的String.IsNullOrWhiteSpace()String.IsNullOrEmpty()也许这需要一个扩展方法?

如果甚至有人或当某人做出一个,这样的事情会认为是不好的做法?

+0

你可以扩展它,但我只是名字好听,HasNonDefaultValue –

+4

甚至'(X?0) == 0' –

+0

这不被认为是一个邪恶的死亡事件?我觉得任何时候我建议我在这里扩展一些扩展。 – markokstate

回答

1

我不这么认为,但它很容易编写自己:

[Pure] 
public static bool IsNullOrDefault<T>(this T? pValue) 
where T : struct { 
    return pValue == null || pValue.Value.Equals(default(T)); 

    // or as suggested in comments (tested) 
    return pValue == null || EqualityComparer<T?>.Default.Equals(pValue, default(T)); 
} 
+1

作为一个方面说明,考虑使用'EqualityComparer .Default.Equals'来避免调用Object.Equals引起的装箱。 –

相关问题