泛型函数返回列表

本文关键字:列表 返回 函数 泛型 | 更新日期: 2023-09-27 18:04:22

我是c#新手,现在正在阅读泛型函数。但我不明白是怎么回事?例如,我有这个函数:

public List<T> CutText (List<T> list)
{
      foreach (var a in list)
      {
                a.Text = "Yes";
      }
      return list;
}

泛型函数返回列表

  1. 你的函数不是通用的。这只是一个无效的不可编译函数,它返回一个未知类型t的列表。你的函数或你的类应该在其声明中也有<T>,以便使其泛型。

    例如:

    public List<T> CutText<T>(List<T> list)
    {
        foreach (var a in list)
        {
          a.Text = "Yes";
        }
        return list;
    }
    
  2. 即使您将其标记为通用,现在类型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

但是你必须定义一个泛型可以理解的地方。否则,它就不能像上面那样是强类型代码。