2017-02-28 55 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引起的裝箱。 –