如何修复此函数,以便我可以输入任何类的列表
本文关键字:输入 我可以 任何类 列表 何修复 函数 | 更新日期: 2023-09-27 18:33:19
如何修复此函数,以便我可以输入任何类的列表
private static List<Type> CopyObjList(List<Type> Group, List<Type> AddGroup)
{
foreach (Type obj in AddGroup)
Group.Add(obj);
return Group;
}
泛
型和添加范围
private static void CopyObjList<T>(List<T> Group, List<T> AddGroup)
{
Group.AddRange(AddGroup);
}
返回类型不是强制性的,因为 List 是引用类型。
有好的一天
如我所见,您只需要将一系列元素添加到现有列表中即可。您不需要为此编写函数。您可以简单地使用
AddRange
列表类的方法
需要考虑的几件事:
- 泛 型
- 我们是否也希望能够添加派生类型
-
是否确实要修改现有列表。
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; }
这将保持原始列表不变,返回新列表,并且还允许添加派生类的实例。
泛
型。
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);
不确定您的问题,但似乎您需要一个接受任何类型的集合。如果是这样,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;
}