[英]Compare two vars of T in a method of a generic class<T,U> (code port from C++ to C#)
如何在泛型類<T,U>的方法中比較兩個類型為T的變量? 這是一個拋出以下編譯器錯誤的示例代碼:
錯誤CS0019運算符'> ='不能應用於'T'和'T'類型的操作數
class IntervalSet< T, U >
{
public void Add ( T start, T end, ref U val )
{
// new interval is empty?
if (start >= end) // ERROR
return;
}
}
我嘗試將源代碼從C ++移植到C#,而C#對我來說是新的。 謝謝你的幫助。
你必須告訴C# T
是可比較的,否則你只能用T
做那個System.Object
東西(那並不多),不包括創建一個新的實例,因為C#甚至不知道T
是否有一個默認的構造函數:
class IntervalSet< T, U >
where T : IComparable<T>
{
public void Add ( T start, T end, ref U val )
{
if (start.CompareTo(end) >= 0) {
}
}
}
請注意, int
, string
, DateTime
等標准類型都實現了此接口。
請參閱: IComparable <T>接口 ,
類型參數的約束(C#編程指南)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.