genericのリスト<
明示的に変換されていても、失敗し、問題を強調します。これが調整の問題ではないことは明らかです。実際、コンピレーションのセキュリティを確保するために、この割り当ては明らかに禁止されています。
<code class="language-csharp">List<动物> animalsList = new List<长颈鹿>();</code>分散の潜在的なリスクは、次の例で説明できます。
このコードは無害に見えますが、偶発的な動作とデータの損傷を引き起こす可能性があります。派生タイプ(ライオン)をベースタイプ(動物)に割り当てて、タイプの安全ルールの違反を許可します。
配列中の参照タイプチェックのタイプの違いはランタイムをサポートしますが、ジェネリックはコンパイルのタイプの安全性を実現するように設計されています。
<code class="language-csharp">List<长颈鹿> giraffes = new List<长颈鹿>(); giraffes.Add(new 长颈鹿()); List<动物> animals = giraffes; animals.Add(new 狮子());</code>
C#4でのセキュリティ差異サポートの導入が、インターフェイスと委託委員会にのみ制限されています。座標は、FUNC
およびIENUMERATIONに使用されることが許可されており、インバーターは
を使用できます。
以上がC#2.0でリストにリストを割り当てることができないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。