をList<string>
に変換できないのですか? List<object>
オブジェクトを変数に割り当てて、興味深い異常を引き起こすようにしてください。この変換が許可されておらず、常に多くの開発者を悩ませてきた理由。 List<string>
List<object>
問題分析
次のコードフラグメントを検討してください:
関心と明示的な変換の試みが失敗したため、その理由は疑問に思いました。
List<string> sl = new List<string>(); List<object> ol; ol = sl; // 隐式转换不被允许 ol = (List<object>)sl; // 显式转换也失败
この制限の主な理由は、リスト内で矛盾が発生する可能性があることです。この変換を許可してから、リストにのタイプをリストに追加すると、文字列リストが一貫していません。
反復の最初のリストが参照されると、インスタンスを文字列に変換できないため、異常なクラス変換に遭遇します。メンテナンスタイプの一貫性は、リスト内のデータの整合性を確保するために不可欠です。 Foo
Foo
この変換は許可されていますか?便利に思えるかもしれませんが、この変換を許可することは、実行時にエラーまたは不整合になる可能性があります。より一般的なクラス(C#で逆変換を成功させることができますか?
この逆変換がC#で合法かどうかは明らかではありません。合法である場合、ディスプレイの隠された変換と明示的な変換の違いを強調し、後者はタイプの一貫性ルールに違反しているようです。この側面のさらなるテストと明確化は非常に価値があります。以上がC#で「リスト」を「リスト」にキャストできないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。