簡體   English   中英

為什么我不能聲明通用列表 <T> 作為接口方法的返回類型?

[英]Why can't I declare generic List<T> as return type for interface method?

為什么我不能創建返回類型為List<T>的接口方法? 我遇到此編譯錯誤“找不到類型或名稱空間名稱'T'”

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

感謝您的任何投入。

T應該在您的界面中是什么? 對於編譯器, T在那時只是一個未知的標識符。

您需要為T指定一些內容,將某些類型用作List<T>的類型參數。


根據您要實現的目標,有四個選項:

  • 在接口/類級別上將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(); } } 

T泛型參數也必須在接口中聲明。 像這樣:

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

您應該執行以下操作:

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

要么

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

甚至可能:

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

^不是最好的主意,但可以使用。

暫無
暫無

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

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