0

リターンタイプのインターフェイスメソッドを作成できないのはなぜList<T>ですか?このコンパイルエラーが発生しました「タイプまたは名前空間名「T」が見つかりませんでした」

interface ILoader 
{        
    List<T> LoadValues();
}

あなたの入力に感謝します。

4

3 に答える 3

7

あなたのインターフェースには何があるTはずですか?コンパイラにとって、Tはその時点では不明な識別子にすぎません。

に何かを指定する必要があります。Tこれは、の型引数として使用される型ですList<T>


達成したいことに応じて、4つのオプションがあります。

  • Tインターフェイス/クラスレベルでジェネリックパラメータとして宣言します。

    interface ILoader<T>
    {        
        List<T> LoadValues();
    }
    
  • Tメソッドレベルでジェネリックパラメータとして宣言します。

    interface ILoader
    {        
        List<T> LoadValues<T>();
    }
    
  • 固定タイプをT;として割り当てます。例int(wlog):

    interface ILoader
    {        
        List<int> LoadValues();
    }
    
  • Tより高いネスティングレベルでジェネリックパラメーターとして宣言します(この可能性を指摘してくれたJeppe Stig Nielsenに感謝します):

    class Outer<T>
    {
        interface ILoader
        {
            List<T> LoadValues();
        }
    }
    
于 2013-01-20T14:53:58.000 に答える
2

Tジェネリックパラメータもインターフェイスで宣言する必要があります。このようなもの:

interface ILoader<T>
{        
    List<T> LoadValues();
}
于 2013-01-20T14:53:37.440 に答える
0

次のようなことをする必要があります。

interface ILoader<T>
{
    List<T> LoadValues();
}

または

interface ILoader
{        
    List<T> LoadValues<T>();
}        

または、おそらく:

interface ILoader 
{        
    List<dynamic> LoadValues();
}

^最善のアイデアではありませんが、使用可能です。

于 2013-01-20T15:55:34.353 に答える