我有以下方法與通用的類型:如何定義基本類型的泛型類型限制?
T GetValue<T>();
我想至T限制爲原始類型如int,串,浮點但不是類類型。我知道我可以像這樣定義類的類型:
C GetObject<C>() where C: class;
我不確定原始類型是否可能,以及如果是這樣。
我有以下方法與通用的類型:如何定義基本類型的泛型類型限制?
T GetValue<T>();
我想至T限制爲原始類型如int,串,浮點但不是類類型。我知道我可以像這樣定義類的類型:
C GetObject<C>() where C: class;
我不確定原始類型是否可能,以及如果是這樣。
您可以使用它來限制它的值類型:
where C: struct
你還別說字符串。不幸的是,字符串不會被允許,因爲它們不是值類型。
這裏就是你要找的內容:
T GetObject<T>() where T : struct;
什麼是你真正想要的方法呢?這可能是因爲你實際上需要C來實現IComparable或其他接口。在這種情況下,你想要類似
T GetObject<T> where T: IComparable
沒有通用的約束條件來匹配那些乾淨的事情。你究竟想要做什麼?例如,您可以使用運行時檢查(例如靜態ctor)(對於泛型類型 - 對於泛型方法不太容易)來破解它...
但是;大多數時候,我看到這一點,這是因爲人們希望的一個:
EqualityComparer<T>.Default
Comparer<T>.Default
但不能用於字符串以下的樣品,其可爲空 – 2009-04-30 03:47:56
當然,它可以讓你通過任何用戶定義的結構類型的一些有用的提示,不只是原始類型。除了定義所有內置基元類型的重載之外,我不確定是否有方法。 – 2009-04-30 03:49:14