在C# 中測試物件的泛型類型
在C# 中,必須驗證物件的泛型類型以確保正確程式碼中的處理和相容性。一種常見的方法是利用 GetType() 方法來檢索物件的類型並將其與已知的泛型類型定義進行比較。但是,這種方法在嘗試確定泛型類型時可能會導致錯誤。
類型等效性問題
提供的代碼:
public bool Test() { List<int> list = new List<int>(); return list.GetType() == typeof(List<>); }
可能看起來合乎邏輯,但它總是返回false,因為== 運算子比較類型等效性。泛型類型 List 表示可以儲存任何類型而不僅僅是整數的泛型清單。因此,list 的類型將比 List 更具體,從而導致不等式比較。
測試泛型類型的解決方案
要準確測試物件是否屬於泛型類型,請使用下列指令方法:
檢查泛型實例:
要確定物件是否是任何泛型類型的實例,請使用IsGenericType 屬性:
return list.GetType().IsGenericType;
如果 list 是實例,則傳回 true任何泛型類別。
檢查特定泛型類型:
驗證物件是否為特定泛型清單(List>>) ,使用GetGenericTypeDefinition( )方法:
return list.GetType().GetGenericTypeDefinition() == typeof(List<>);
如果list 是 List 的實例,但不是任何衍生類型,則傳回 true。
記住這些檢查建立了精確的類型等效性。如果物件是派生泛型類型的實例(例如,List
以上是如何在C#中準確測試物件的泛型類型?的詳細內容。更多資訊請關注PHP中文網其他相關文章!