ホームページ  >  記事  >  バックエンド開発  >  C# の IList と List の違いの詳細な分析

C# の IList と List の違いの詳細な分析

高洛峰
高洛峰オリジナル
2017-01-19 11:51:361351ブラウズ

コードを書いていて、
IList IList11 =new List();
List List11 =new List();

について疑問に思ったので、ネットで調べてとてもインスピレーションを受けたので保存しました。しかし、私が同意するいくつかのアイデアを受け入れる勇気はありませんでした。私の意見を示すために赤いフォントを使用してください。

まず第一に、IList ジェネリック インターフェイスは ICollection ジェネリック インターフェイスの子孫であり、すべてのジェネリック リストの基本インターフェイスです。
これはすべてのジェネリック型の単なるインターフェイスであり、コレクション データのキャリアとしてのみ使用される場合、実際には IList がその役割を果たします。
ただし、多くの場合、収集データを処理したり、データをフィルターしたり並べ替えたりする必要があります。現時点では、IList は無力です。

1. インターフェイス メソッドのみを使用したい場合は、このインターフェイスを実装するクラスの他のメソッドやフィールドを取得しないので、効率的にスペースを節約できます。 (サブクラスは親クラスを継承し、独自の属性とメソッドを持つため、これらは、親クラスの変数に配置されるか独自の型の変数に配置されるかに関係なく、サブクラス NEW が出現した後に存在する必要があります。そうでない場合は、上に変換してから下に変換すると、データが失われます。)

2. IList <> はいくつかの操作メソッドを定義しており、それらを自分で実装する必要があります。ジェネリック クラス。IList <>

IList IList11 =new List();
List List11 =new List();

これら 2 行のコードは、運用上の観点から見ると、実際にはどちらも List オブジェクトのインスタンスを作成します。つまり、操作に違いはありません。
この操作を保存するために使用される戻り値の変数の型が異なるだけです。
したがって、これら 2 行のコードの目的は異なることがわかります。
List List11 =new List ();
List を作成したいのですが、関連する操作を実行するには List の関数を使用する必要があります。
そして IList IList11 =new List();
はインターフェイス IList に基づいてオブジェクトのインスタンスを作成したいだけですが、このインターフェイスは List によって実装されます。したがって、IList インターフェイスで指定された関数を使用することを望んでいます

C# の IList と List の違いについて詳しくは、PHP の中国語 Web サイトに注目してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。