ページ 1 / 1
あらゆる型のリストを受け取る関数を作りたい
Posted: 2017年4月22日(土) 19:13
by cd
C#で任意のリスト型の変数を受け取って処理する関数を作りたいです。
引数をProccess(Type x){}
これだとできないのですが、間違っているのは何故ですか?
Re: あらゆる型のリストを受け取る関数を作りたい
Posted: 2017年4月22日(土) 23:26
by hide
目的がよくわからず適切に回答しづらいです。何がしたいのかわかりやすく書いてください。
任意なのにListなのですか?
任意の型引数を持つListですか?
Listを継承した任意の引数ですか?
ちなみに
こう定義した場合は素直に読むと、Type型の引数xを受け取るProcessというメソッドですね。
Typeというのは型自体を表すクラスです。
クラス名とかを取得できるやつですね。
https://msdn.microsoft.com/ja-jp/librar ... .110).aspx
オフトピック
私がリストの処理を書くときは、引数で受け取るということはあんまりやらないです。
privateに持つlistをいじる、Linqで処理しちゃう、で充分なので。
Re: あらゆる型のリストを受け取る関数を作りたい
Posted: 2017年4月23日(日) 01:56
by YuO
文をそのまま読むと,
コード:
void func<T> (IList<T> args) { /* ... */ }
とかやりたいのかなぁ,と思ったり。
あ,でもこれだとIReadOnlyList<T>をとれないか……。
コード:
void func<T> (IEnumerable<T> args) { /* ... */ }
と,IE<T>にすればIList<T>とIReadOnlyList<T>を両方取れますし,
コード:
void func (IEnumerable args) { /* ... */ }
とIEにすればIListまで使えますが……。
--
20170425T0955+0900 modified: codeの言語指定間違いを修正