ホームページ > バックエンド開発 > C++ > C#で「リスト」を「リスト」にキャストできないのはなぜですか?

C#で「リスト」を「リスト」にキャストできないのはなぜですか?

Susan Sarandon
リリース: 2025-01-28 13:51:09
オリジナル
794 人が閲覧しました

Why Can't I Cast a `List` to a `List` in C#?

c#タイプ変換の問題:なぜ

List<string>に変換できないのですか? List<object>

c#では、

オブジェクトを変数に割り当てて、興味深い異常を引き起こすようにしてください。この変換が許可されておらず、常に多くの開発者を悩ませてきた理由。 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 サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート