C# の判別共用体
判別共用体は、複数の異なる型の値を格納できるデータ構造です。 C の従来の共用体とは異なり、判別共用体はコンパイル時に型安全性を強制します。
問題ステートメント
元の質問は、作成者がデータ構造を作成したいという問題を提示しています。異なる型の値を保存できますが、型チェックが強制されます。作成者は、カスタム Union クラスを使用してソリューションを実装しようとしていますが、コンパイラによる型安全性が欠如しています。
ソリューション
回答セクションで提供されているソリューションは、タイプセーフな共用体の実装を使用することで、タイプセーフの問題を解決します。この実装では、判別された共用体を表す基本クラス Union3 と、共用体のさまざまなケースを表す 3 つのネストされたクラス Case1、Case2、および Case3 を定義します。
基本クラスの Match メソッドは、引数として 3 つの関数を取ります。 、それぞれは共用体が保持できる異なる型に対応します。 Match を呼び出すと、共用体に格納されている値の実際の型に基づいて適切な関数が実行されます。
実装の詳細
ネストされたクラス Case1、Case2、およびCase3 は、それぞれの型の値をカプセル化するために使用されます。基本クラスのコンストラクターは、外部クラスが継承できないようにするためにプライベートにされます。
使用法
提供された例は、タイプ セーフ ユニオンを使用して次のことを行う方法を示しています。さまざまな型の値を保存し、実際の型に基づいてそれらを照合します。 Match メソッドを使用すると、共用体の値をタイプ セーフに抽出できます。
結論
このソリューションは、C# での判別共用体のタイプ セーフな実装を提供します。これにより、手動で型をチェックする必要がなくなり、コードが共用体に格納されているさまざまな型を正しく処理できるようになります。
以上がC# でタイプセーフな判別ユニオンを作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。