4

基本的に、マトリックス用の一般的なブルートフォース getMax() メソッドを作成しようとしています。ここに私が持っているものがあります:

 private T getMax <T>(T[,] matrix, uint rows, uint cols) where T : IComparable<T>
    {
        T max_val = matrix[0, 0];
        for (int row = 0; row < rows; ++row)
        {
            for (int col = 0; col < cols; ++col)
            {
                if (matrix[row, col] > max_val)
                {
                    max_val = matrix[row, col];
                }
            }
        }
        return max_val;
    }

これはエラーでコンパイルされませんOperator '>' cannot be applied to operands of type 'T' and 'T'。IComparable ディレクティブを指定したので、ここで何が起こっているのかわかりません。これが機能しないのはなぜですか?

4

3 に答える 3

7

> 操作ではなく、CompareTo() を使用する必要があります。

ここを参照してください: http://msdn.microsoft.com/en-gb/library/system.icomparable.aspx

あなたの場合、次のようにします:

if (matrix[row, col].CompareTo(max_val) > 0)
于 2013-02-26T18:16:39.433 に答える
2

実装とは、演算子が定義されているのではなく、メソッドが定義されIComparableていることを意味します。以下を使用する必要があります。CompareTo>

if (matrix[row, col].CompareTo(max_val) > 0) {
于 2013-02-26T18:18:01.443 に答える
1
if (matrix[row, col] > max_val)

する必要があります

if (matrix[row, col].CompareTo(max_val) > 0)

IComparableCompareToはnotのみを提供するため>

于 2013-02-26T18:18:26.037 に答える