4
我有一個具有兩個通用參數的類。我想限制第二個泛型參數是與第一個不同的類型。有沒有辦法在編譯時做出這樣的限制?在運行時檢查類型不是很有用。通用參數:確保不同類型
public class Test<A, B>
where B : not_typeof(A)
{
// ...
}
我有一個具有兩個通用參數的類。我想限制第二個泛型參數是與第一個不同的類型。有沒有辦法在編譯時做出這樣的限制?在運行時檢查類型不是很有用。通用參數:確保不同類型
public class Test<A, B>
where B : not_typeof(A)
{
// ...
}
事實上,這是一個稍微不同的情況,但最終它是一個@Sam鏈接到 –
的答案是否有其他約束?因爲當你有'在哪裏A:IUtensil','在哪裏B:IVehicle',爲什麼你關心如果用戶有'測試<叉車,叉車>'?它應該工作...你可以添加一些更多的細節嗎? – Kobi
你不能寫這樣的約束,但是當然你可以放上其他的約束來保證類型不能相同,例如,如果'A'必須從'Animal'和'B'類派生出來,必須從'Bicycle'類派生出來,如果這兩個類都不從另一個派生,那麼你就會知道'A'和'B'不能是相同的類型,就像@Kobi所暗示的那樣。類似地,如果有'struct'約束(非空值類型),另一個具有'class'約束(引用類型)。 –