簡體   English   中英

在泛型類<T,U>的方法中比較兩個T的變量(從C ++到C#的代碼端口)

[英]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) {
        }
    }
}

請注意, intstringDateTime等標准類型都實現了此接口。

請參閱: IComparable <T>接口
類型參數的約束(C#編程指南)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM