泛型函数返回列表
本文关键字:列表 返回 函数 泛型 | 更新日期: 2023-09-27 18:04:22
我是c#新手,现在正在阅读泛型函数。但我不明白是怎么回事?例如,我有这个函数:
public List<T> CutText (List<T> list)
{
foreach (var a in list)
{
a.Text = "Yes";
}
return list;
}
-
你的函数不是通用的。这只是一个无效的不可编译函数,它返回一个未知类型t的列表。你的函数或你的类应该在其声明中也有
<T>
,以便使其泛型。例如:
public List<T> CutText<T>(List<T> list) { foreach (var a in list) { a.Text = "Yes"; } return list; }
-
即使您将其标记为通用,现在类型T也没有
Text
属性,直到T
被具有Text
属性的类或接口更精确地指定:public List<T> CutText<T>(List<T> list) where T : TextBox
或
public List<T> CutText<T>(List<T> list) where T : IAnyInterfaceHavingTextProperty
什么是Text属性?您需要定义一个约束,以便泛型知道会发生什么。例如,ITextControl
接口是webforms框架中的一个接口,如果你像下面这样定义它,你的代码就可以工作了。
public List<T> CutText<T>(List<T> list)
where T: ITextControl
但是你必须定义一个泛型可以理解的地方。否则,它就不能像上面那样是强类型代码。