2011-07-21 8 views
1

私はMyBaseClassから継承する2つのクラス(MyClass1とMyClass2)を持っています。継承したクラスを関数パラメータとして

私はこの

private void DoStuff(List<MyBaseClass> input) 

{ 

... 

} 

のように、パラメータとして、これらのいずれかのリストを取る関数を書きたい

は、どのように私は、この関数にリストを渡すのですか?

+1

はあなたが 'や'一覧 ''リストを渡すことができるようにしたいことを意味するか、またはあなたが混合物または 'MyClass1'を含む'一覧 'を通過したいですかと 'MyClass2'インスタンス? – LukeH

+0

リストを渡すことができるようにしたいまたはリスト

答えて

6

List<MyClass1> a List<MyBaseClass>ではありません。その理由を説明するために、一般的な分散については、スタックオーバーフローを検索してください。

一つますでき行うことが一般的な作りです、C#4および.NET 4に、

private void DoStuff<T>(List<T> input) where T : MyBaseClass 

また、あなただけそれを反復処理する必要がある場合、あなたは共変であるIEnumerable<T>を使用することができますT

private void DoStuff(IEnumerable<MyBaseClass> input) 
+0

リストまたはリスト

+1

@Zainを渡すことができるようにしたい:私が提案した両方の方法でそれを可能にする。 –

+0

あなたは私に教えてくれませんか 私的空DoStuff(IEnumerable 入力) このメソッドのパラメータ型はどうなりますか? –

関連する問題