如何用不同的列表对象作为参数制作方法?

时间:2016-06-11 23:53:13

标签: c#

List作为一个我不想复制代码的参数,我没有什么问题。

class A
{
    public int a { get; set; }
}

class B: A
{
    public int b { get; set; }
}

class C: A
{

    public int c { get; set; }

}

class ModifyBC
{

    public void modify(List<C> CList)
    {

        //some action
    }

    public void modify(List<B> BList)
    {

        //some action 
    }


}

我想修改一个方法而不是两个方法。这些方法完全相同,但参数(List)不同。我不知道如何制作参数取决于对象List

2 个答案:

答案 0 :(得分:2)

在这种情况下,您可以使用Generic类型并将其约束到父类。

public void Modify<T>(List<T> list) where T : A
{
    //some action
}

这将允许您传入派生自类A的任何类型。

List<B> listB = new List<B>();
List<C> listC = new List<C>();

Modify<B>(listB);
Modify<C>(listC);

这两个调用都将使用相同的方法。

答案 1 :(得分:1)

您可以使用泛型来执行以下操作:

public void SomeMethod <T>(List<T> list)
{

} 

您可以这样称呼它:

SomeMethod<int>(someListObject)
SomeMethod<string>(someOtherListObject)