伊夫下面的代碼:違約<T>測試一個通用的返回值
TConverted ret;
ret = forward.Get<TConverted>(GetForwardKey(id, convType));
if (ret != default(TConverted))... // wrong here !
通用Get函數從緩存返回的項目。它可以是一個值類型或一個類。我想檢查返回的值是否爲空或默認值,但我認爲它應該工作的代碼不。有可能嗎?
伊夫下面的代碼:違約<T>測試一個通用的返回值
TConverted ret;
ret = forward.Get<TConverted>(GetForwardKey(id, convType));
if (ret != default(TConverted))... // wrong here !
通用Get函數從緩存返回的項目。它可以是一個值類型或一個類。我想檢查返回的值是否爲空或默認值,但我認爲它應該工作的代碼不。有可能嗎?
從this essentially-identical question ...
爲了避免拳擊,比較仿製藥的平等與
EqualityComparer<T>.Default
的最佳途徑。這方面IEquatable<T>
(沒有 拳擊)以及object.Equals
,並處理所有的「提升」的細微差別的所有Nullable<T>
。因此:if(EqualityComparer<T>.Default.Equals(obj,default(T)) { return obj; }
這將匹配:
- 爲類
- 空(空)爲null
Nullable<T>
- 零/假/等其他結構
如果這對你有幫助,請提供Mark Gravell的回答(我已經找到了答案)諷刺)關於我所鏈接的問題。
謝謝,抱歉錯過了答案,我提出了你的和Mark的答案。 – 2012-08-01 13:26:23
你會得到什麼錯誤? – SLaks 2012-08-01 13:03:03