ホームページ >バックエンド開発 >C++ >C#2.0でリストにリストを割り当てることができないのはなぜですか?

C#2.0でリストにリストを割り当てることができないのはなぜですか?

Linda Hamilton
Linda Hamiltonオリジナル
2025-02-02 05:21:09671ブラウズ

Why Can't I Assign List to List in C# 2.0?

genericのリスト<

C#分散特性とは、共同または反転した値に参加する能力を指します。ただし、リスト>

明示的に変換されていても、失敗し、問題を強調します。これが調整の問題ではないことは明らかです。実際、コンピレーションのセキュリティを確保するために、この割り当ては明らかに禁止されています。

<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の解決策の場合、リストを変更する代わりに、リスト.Convertallを使用して新しいリストを作成することをお勧めします。

以上がC#2.0でリストにリストを割り当てることができないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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