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

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

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-02-02 05:16:09206ブラウズ

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

generic fright<

c#で汎用リストを使用する場合、派生タイプのリストを派生型のタイプのリストに割り当てるようにしてください。この問題は、安全性の種類とランタイム中のタイプの安全性の編集との対立によって引き起こされます。 質問とコードの例

次のコードを検討してください:

この例では、ランタイムチェックのため、動物アレイにキリンアレイを割り当てることが効果的です。ただし、リストの配布は、コンピレーション中にエラーを引き起こします。

異なる問題とセキュリティの問題この問題は、汎用型の分散の概念に関連しています。調整により、ベースタイプの位置で派生タイプを使用することができ、インバーターは派生型位置でベースタイプを使用できます。上記の例では、リストをリストに割り当てるリストは、調整された変更と見なされます。
<code class="language-csharp">class Animal { }
class Giraffe : Animal { }

static void Main(string[] args)
{
    // 数组赋值有效,但是...
    Animal[] animals = new Giraffe[10]; 

    // 隐式转换失败
    List<Animal> animalsList = new List<Giraffe>(); //编译错误

    // 显式转换也失败
    List<Animal> animalsList2 = (List<Animal>) new List<Giraffe>(); //编译错误
}</code>
ただし、この割り当てはセキュリティの問題を引き起こす可能性があります。新しいライオンオブジェクトが動物リストに追加された場合、動物リストタイプの安全性に違反している場合でも、コンピレーションチェックなしで動物リスト2に割り当てることができます。

c#

の解決策 ランタイム中に実行するために配列を使用してください: アレイは、ランタイム中の参照タイプの分散をサポートします。これにより、派生型アレイをベースタイプアレイに割り当てることができます。 c#4セキュリティの正方形の差:

C#4は、インターフェイスと委任のセキュリティ差異に対するサポートを紹介します。 FUNC はTの調整された変化であり、Tにはアクションが反転します。

c#2方法:

C#2では、list

結論

C#差異問題は、一般的な割り当て中にタイプの安全性を維持することの重要性を強調しています。アレイまたはランタイムチェックの数を使用して安全でない正方形を達成できますが、インターフェイスと委託とのセキュリティの差異により、コンピレーション中に正しいタイプのタイプを確保できます。 C#の初期バージョンの場合、代替ソリューションとしてlist

.Convertallを使用できます。

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

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