ホームページ > バックエンド開発 > C++ > C# 配列はどのようにして IList インターフェイスを部分的に実装しますか?

C# 配列はどのようにして IList インターフェイスを部分的に実装しますか?

Linda Hamilton
リリース: 2025-01-05 08:53:40
オリジナル
967 人が閲覧しました

How Do C# Arrays Partially Implement the IList Interface?

C# の配列が IList を部分的に実装する方法

IList の Count プロパティを公的に宣言していないにもかかわらず、C# の配列を部分的に実装すると考えられます。

実装の詳細

配列は IList を直接実装しませんが、共通言語ランタイム (CLR) は、実際に IList を実装する具体的な配列型を作成します。インタフェース。ただし、この実装は従来の方法では明らかではありません。

具体的には、CLR は System.SZArrayHelper と呼ばれるシステム定義クラスを使用して、IList の基礎となる実装を提供します。配列の場合。この実装には、配列の Length プロパティに内部的に委任される Count プロパティが含まれています。

使用例

配列を IList にキャストするには、コンパイラは、castclass 命令を使用してキャストを実行する IL コードを生成します。次に、CLR は SZArrayHelper クラスを利用してインターフェイス実装を提供します。

制限事項

IList の部分的な実装。 by 配列にはいくつかの制限があります。たとえば、インターフェイス パラメーターを IList に設定して配列型に対して GetInterfaceMap メソッドを呼び出そうとすると、 「インターフェイスが見つかりません」という例外が発生します。

影響

IList の実装。 SZArrayHelper を介した配列の使用は、アヒルのような型付けのケースであり、CLR は、明示的に実装していないにもかかわらず、配列がインターフェイスを実装しているかのような錯覚を与えます。これにより、配列を IList として使用できるようになります。カスタム アダプターを必要とせずにオブジェクトを作成できます。

以上がC# 配列はどのようにして IList インターフェイスを部分的に実装しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート