[英]i need a solution to do type parameter overloading
我需要這樣的類型參數重載:
Public Class Map(Of TKey, TValue)
Public Class Map(Of TKey As IEquatable(Of TKey), TValue)
這樣我就可以New Map(Of Human)
,並且編譯器會自動將其與Public Class Map(Of TKey, TValue)
匹配;如果我new Map(Of String)
則編譯器會自動將其與Public Class Map(Of TKey As IEquatable(Of TKey), TValue)
(因為String是IEquatable(Of String))
現在,我的解決方案是為類提供不同的名稱,例如:
Public Class Map(Of TKey, TValue)
Public Class EqMap(Of TKey As IEquatable(Of TKey), TValue)
但我正在尋找更好的解決方案
抱歉,我不會說VB ...但是在C#中(您的標簽中有),您想要的是
Map<TKey,TValue>
{
// implementation
}
和
Map<Tkey,TValue>
where TKey: IEquatable
{
}
不幸的是,不支持此方法,因為約束不是簽名的一部分,您將必須提供不同的簽名,並且使用不同的名稱(或可能使用名稱空間)是IMO的最簡潔解決方案。
沒有比您建議的更好的解決方案。 我個人更喜歡EquatableMap
而EqMap
,如果is
關系和重用是有益的,則EquatableMap
可以繼承Map
。
.Net不支持類重載,誰知道呢,也許在.Net 5.0中。 這將是有用的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.