のパラメータでタイプをにする前に、メソッドのパラメータとしてコレクションを渡した場合、IEnumerable<T>
タイプを使用しました。IEnumerableを使用する方法
しかし、最近、私は同様の方法で作成されたタイプIEnumerable<T>
の収集に問題が持っていた:私は(例えば、foreachの)コレクションの人々を使用している場合は、常に、この場合
var peoples = names.Select(name => new People(name));
を、 Peopleクラスの新しいインスタンスが作成され、簡単にエラーが発生する可能性があります。
IEnumerable <T>
タイプパラメータを使用するのが正しいかどうかを質問したいと思います。私はそれが問題を引き起こすかもしれないと思う(上記の例を参照)。このタイプは使用しないでください。どのような選択肢をお勧めしますか(ICollection<T>
,など)、どの代替手段を使用するのですか?
または、Selectメソッドでオブジェクトを作成すると愚か者しか使用されないため、これは愚かな疑問だと思いますか?
もちろん、私はToArray()
またはToList()
を使用して問題を解決できることを知っています。しかし、この方法を使用する他の誰か、それを知ることはできません。私は正しいタイプのパラメータを選択することによってこれを防ぐ方法を知りたいと思います。リストや配列はあまりにも私のために私はちょうどオブジェクトを "列挙"したい特定です。
「新しい人(名前)」を使用してどのようなエラーが発生する可能性がありますか? –
Wiktor Zychla:問題:人々を使用する場合、常にPeopleというクラスの新しいインスタンスが作成されます。 – mveith