0
public class MyClass<T>
{
        public T this[int index]
        {
            get
            {
                ...
            }
            set
            {
                ...
            }
        }

        public void MyMethod<T>()
        {   
             int middleIndex = ...;              
             T value = this[middleIndex ];     
             ...             
        }           
}

MyMethod() 内のステートメントのため、コードはコンパイルされません。インデクサーを呼び出す別の方法はありますか?

編集:変更された MyMethod()

Edit2:コンパイルエラー

Error    6    Cannot implicitly convert type 'T [C:\MyClass.cs]' to 'T [C:\MyClass.cs]'

ありがとう。

4

5 に答える 5

4

私にとってはうまくいきます:

public class MyClass<T>
{
    public T this[int index]
    {
        get
        {
            return default(T);
        }
        set
        {
        }
    }

    public void MyMethod(int index)
    {                 
         T value = this[index];     
    }           
}

確かに、indexパラメーターをに導入する必要がありましたが、どこかMyMethodからインデックスを取得したいと思っていたと思います...それが意図したものでない場合は、明確にしてください。

于 2010-09-08T18:48:01.250 に答える
3

これは私にとってはうまくいきます:

public class MyClass<T>
{
    List<T> _items = new List<T>();

    public T this[int index]
    {
        get
        {
            return _items[index];
        }
    }

    public void MyMethod()
    {
        T value = this[2];
    }
}
于 2010-09-08T18:52:00.420 に答える
1

インデクサーを呼び出すことは問題ありませんが、必要なインデックスがわかりません。index を MyMethod のパラメーターにすると、正常に機能します。

現在のインデックスなどを取得しようとしている場合は、プライベート変数を保存し、それをインデクサーに接続してアクセスする必要があります。

編集したコードは正常にコンパイルされます...

public class MyClass<T>
{
        public T this[int index]
        {
            get
            {
                ...
            }
            set
            {
                ...
            }
        }

        public void MyMethod()
        {   
             int middleIndex = ...;              
             T value = this[middleIndex ];     
             ...             
        }           
}
于 2010-09-08T18:51:25.203 に答える
0

問題のあるコードは次のとおりです。

public void MyMethod<T>()

クラスMyClass<T>には既にジェネリック型パラメーター T があるため、ジェネリック<T>onMyMethodは不要です

于 2010-09-09T05:15:53.837 に答える
0

インデックスの値をメソッドに渡していませんMyMethod- もう少しコードを投稿できますか? 何かが足りないようです...

于 2010-09-08T18:49:49.660 に答える