0

如何重载将具有不同类型的通用列表作为参数的方法?

例如:

我有两种方法:

private static List<allocations> GetAllocationList(List<PAllocation> allocations)
{
    ...
}

private static List<allocations> GetAllocationList(List<NPAllocation> allocations)
{
    ...
}

有没有办法可以将这两种方法合二为一?

4

2 回答 2

4

当然可以......使用泛型!

private static List<allocations> GetAllocationList<T>(List<T> allocations) 
   where T : BasePAllocationClass
{

}

这假设您的“allocations”、“PAllocation”和“NPAllocation”都共享一些名为“BasePAllocationClass”的基类。否则,您可以删除“where”约束并自己进行类型检查。

于 2009-05-29T16:14:53.300 回答
1

如果您的 PAllocation 和 NPAllocation 共享一个公共接口或基类,那么您可以创建一个只接受这些基对象列表的方法。

但是,如果他们不这样做,但您仍然希望将两个(或多个)方法组合成一个,您可以使用泛型来做到这一点。如果方法声明类似于:

private static List<allocations> GetCustomList<T>(List<T> allocations)
{
    ...
}

那么您可以使用以下方法调用它:

GetCustomList<NPAllocation>(listOfNPAllocations);
GetCustomList<PAllocation>(listOfPAllocations);
于 2009-05-29T16:15:19.527 回答