私は 2 つの間の階層を理解しており、それらの間で変換する方法を知っていますが、このようなリストを宣言することに根本的な問題はありますか?
IEnumerable<int> _bookmarkedDeals = new List<int>();
リストを変更する必要はありません。全体として作成または再作成されます。
代替として、おそらくこれ
IEnumerable<int> _bookmarkedDeals = Enumerable.Empty<int>();
まあ、この場合、_bookmarkedDeals
は空になるので、宣言はやや役に立ちません。そうは言っても、List を IEnumerable として扱うことに問題はありません。
(ここでのすべての回答とは異なり..)はい。この宣言には非常に問題があります。List<T>
常にリストにキャストしなければ、どの機能も使用できません。
後でリスト操作を実行しない場合は、メソッドからこの型を返すことをお勧めします。しかし、同じ方法を使用している間は、生活をより困難にし、パフォーマンスを低下させているだけです (キャストのせいで)。
宣言にまったく問題はありませんが、抽象化せずに変数の型を正確に宣言することを好む人もいます。
その宣言に問題はありませんが、特定の制限がない限りIList<int>
、リストのより適切なインターフェイスです。
何も間違ってない。
リストをまったく変更しない場合は、配列を使用できる可能性があります。これは、リストよりもわずかに軽量です。
それには根本的な問題はありませんが、List が提供する (IEnumerable が提供しない) 機能の一部を切り取る必要があるのはなぜでしょうか?
何も問題ありません、良いデザインです。やや有害と見なされる配列を読んでください。適切なインターフェースの選択についてのすばらしい読み物。
いいえ、何も問題はありません。
これがローカル変数でvar
ある場合、 type の変数を作成するために使用するよりもメリットがありませんList<int>
。ただし、列挙するだけであれば、まったく害はありません。それがフィールドであり、おそらく公開されているイベントである場合、それを として公開しないか、具象型の自由な選択を維持することは非常に賢明List<int>
ですIList<int>
。
構文の問題はありませんが、どのように役立つかわかりません。この行にアイテムを挿入しない場合、このリストは にキャストし直さない限り、常に空のままにList<int>
なりIEnumerable<int>
ます。