ホームページ > バックエンド開発 > C++ > C# でタイプセーフな判別ユニオンを作成するにはどうすればよいですか?

C# でタイプセーフな判別ユニオンを作成するにはどうすればよいですか?

DDD
リリース: 2025-01-04 06:28:44
オリジナル
790 人が閲覧しました

How Can I Create Type-Safe Discriminated Unions in C#?

C# の判別共用体

判別共用体は、複数の異なる型の値を格納できるデータ構造です。 C の従来の共用体とは異なり、判別共用体はコンパイル時に型安全性を強制します。

問題ステートメント

元の質問は、作成者がデータ構造を作成したいという問題を提示しています。異なる型の値を保存できますが、型チェックが強制されます。作成者は、カスタム Union クラスを使用してソリューションを実装しようとしていますが、コンパイラによる型安全性が欠如しています。

ソリューション

回答セクションで提供されているソリューションは、タイプセーフな共用体の実装を使用することで、タイプセーフの問題を解決します。この実装では、判別された共用体を表す基本クラス Union3 と、共用体のさまざまなケースを表す 3 つのネストされたクラス Case1、Case2、および Case3 を定義します。

基本クラスの Match メソッドは、引数として 3 つの関数を取ります。 、それぞれは共用体が保持できる異なる型に対応します。 Match を呼び出すと、共用体に格納されている値の実際の型に基づいて適切な関数が実行されます。

実装の詳細

ネストされたクラス Case1、Case2、およびCase3 は、それぞれの型の値をカプセル化するために使用されます。基本クラスのコンストラクターは、外部クラスが継承できないようにするためにプライベートにされます。

使用法

提供された例は、タイプ セーフ ユニオンを使用して次のことを行う方法を示しています。さまざまな型の値を保存し、実際の型に基づいてそれらを照合します。 Match メソッドを使用すると、共用体の値をタイプ セーフに抽出できます。

結論

このソリューションは、C# での判別共用体のタイプ セーフな実装を提供します。これにより、手動で型をチェックする必要がなくなり、コードが共用体に格納されているさまざまな型を正しく処理できるようになります。

以上がC# でタイプセーフな判別ユニオンを作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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