2016-06-11 93 views
1

作为一个参数我不想重复代码的参数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

+1

这取决于您要执行的动作。 –

回答

2

在这种情况下,你可以使用一个泛型类型,并将其约束到父类。

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

可以使用泛型做这样的事情:

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

} 

你会这样称呼它:

SomeMethod<int>(someListObject) 
SomeMethod<string>(someOtherListObject) 
相关问题