1

如何修复此功能以便我可以输入任何类的列表

private static List<Type> CopyObjList(List<Type> Group, List<Type> AddGroup)
{
    foreach (Type obj in AddGroup)
        Group.Add(obj);
    return Group;
}
4

5 回答 5

1

有几点需要考虑:

  • 泛型
  • 我们是否也希望能够添加派生类型
  • 您是否真的要修改现有列表。

    private static List<TList> CopyObjList<TList, TElem>(List<TList> Group, List<TElem> AddGroup)
      where TElem : TList
    {
      List<TList> result = new List<TList>(Group);
    
      foreach (var item in AddGroup)
      {
        result.Add(item);
      }
    
      return result;
    }
    

这将使原始列表保持不变,返回新列表,并且还允许添加派生类的实例。

于 2012-05-05T04:15:20.207 回答
1

泛型和 AddRange

private static void CopyObjList<T>(List<T> Group, List<T> AddGroup)
{
      Group.AddRange(AddGroup);
}

返回类型不是强制性的,因为 List 是一个引用类型。

祝你今天过得愉快

于 2012-05-05T03:45:48.020 回答
1

如我所见,您只需将一系列元素添加到现有列表中。您不需要为此编写函数。你可以简单地使用

AddRange

List类的方法

于 2012-05-05T03:47:52.810 回答
0

不确定您的问题,但似乎您需要一个接受任何类型的集合。如果是这样,一个 ArrayList 可以完成这项工作:

private static ArrayList CopyObjList(ArrayList Group, ArrayList AddGroup) 
{ 
    ArrayList arr = new ArrayList(Group);
    arr.AddRange(AddGroup);
    return arr;
} 

如果要添加的组可能与 ArrayList 不同,那么您可以为其设置 ICollection:

private static ArrayList CopyObjList(ArrayList Group, ICollection AddGroup)
{
    ArrayList arr = new ArrayList(Group);
    arr.AddRange(AddGroup);
    return arr;
} 
于 2012-05-05T04:13:39.280 回答
0

泛型

private static List<T> CopyObjList<T>(List<T> Group, List<T> AddGroup)
{
    foreach(T obj in AddGroup)
        Group.Add(obj);
    return Group;
}

这允许您将编译时类型传递给函数。

例子:

List<string> employees = new List<string> { "Bob", "Joe", "Fred" };
List<string> newHires = new List<string> { "Steve", "John" };

List<string> allEmployees = CopyObjList<string>(employees, newHires);

foreach(string employeeName in allEmployees)
    Console.WriteLine(employeeName);
于 2012-05-05T03:40:51.540 回答