c# C#プログラミング言語では、ベースクラスの参照リストに派生したクラスオブジェクトのリストがコラボレーションの問題を引き起こします。この問題は、基本クラスに派生カテゴリが存在しない場合に発生します。 たとえば、
次のコードを検討してください
このコードでは、キリンオブジェクトのリストが動物が参照するリストに割り当てられます。ただし、この割り当ては、調整の問題により、編集中に失敗しました。協力と非自発性
<code class="language-csharp">class Animal { } class Giraffe : Animal { } static void Main(string[] args) { List<Giraffe> giraffes = new List<Giraffe>(); List<Animal> animals = giraffes; // 编译时错误 }</code>
C#の一般的なタイプは、調整または変更できません。調整により、基本クラスの参照が派生クラスオブジェクトを参照することができますが、非債務はそのような割り当てを防ぎます。リストの場合、デフォルトの動作は非自発性です。つまり、リスト
をリストに割り当てることはできません。
solution明示的な変換:次のコードを使用して、リスト
::
を表示することができます。<code class="language-csharp">List<Animal> animals = (List<Animal>)giraffes; // 不推荐,可能导致运行时错误</code>
<code class="language-csharp">List<Animal> animals = giraffes.ConvertAll(g => (Animal)g);</code>自体が調整をサポートしていないためです。)変更。
以上が派生クラスオブジェクトのリストをC#のベースクラスリストに割り当てることはできますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。