如何重载一个采用不同类型的通用列表作为参数的方法?
例如:
我有两种方法:
private static List<allocations> GetAllocationList(List<PAllocation> allocations)
{
...
}
private static List<allocations> GetAllocationList(List<NPAllocation> allocations)
{
...
}
有没有办法将这两种方法合并为一种?
答案 0 :(得分:4)
当然可以......使用泛型!
private static List<allocations> GetAllocationList<T>(List<T> allocations)
where T : BasePAllocationClass
{
}
这假设您的“分配”,“PAllocation”和“NPAllocation”都共享一些名为“BasePAllocationClass”的基类。否则,您可以删除“where”约束并自行进行类型检查。
答案 1 :(得分:1)
如果您的PAllocation和NPAllocation共享一个公共接口或基类,那么您可以创建一个只接受这些基础对象列表的方法。
但是,如果他们不这样做,但您仍希望将两种(或更多种)方法合并为一种,则可以使用泛型来完成。如果方法声明类似于:
private static List<allocations> GetCustomList<T>(List<T> allocations)
{
...
}
然后你可以使用:
来调用它GetCustomList<NPAllocation>(listOfNPAllocations);
GetCustomList<PAllocation>(listOfPAllocations);