c#リスト
変数にAList<string>
変数を割り当てることは禁止されています。 各変数は、宣言されたタイプに厳密に結合され、タイプの安全性が確保されます。 a List<object>
は文字列のみを保持しますが、a List<string>
は任意のオブジェクトタイプに対応できます。
このシナリオを検討してください:List<object>
この割り当てを許可すると、タイプの安全性が損なわれます。 その後、非弦オブジェクト(整数など)を
に追加した場合、<code class="language-csharp">List<string> stringList = new List<string>(); List<object> objectList; objectList = stringList; // This is NOT allowed</code>を介して繰り返すと、互換性のないオブジェクトに遭遇するとランタイム例外が発生します。
逆に、objectList
からstringList
:
List<object>
一見もっともらしい一方、これは一般的に非現実的です。非弦の要素をList<string>
に追加することへの扉が開かれ、予測不可能な動作と潜在的なランタイムエラーにつながります。 C#コンパイラは、これを防ぎ、データの整合性を維持します。 核となる原則は、タイプの不一致が予期しないクラッシュやデータの腐敗につながる可能性がある状況を防ぐことです。
以上がC#リストvs.リスト:なぜタイプの非互換性?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。