ホームページ > バックエンド開発 > C++ > 直接「スイッチオンタイプ」機能なしでC#にタイプ依存ロジックを実装するにはどうすればよいですか?

直接「スイッチオンタイプ」機能なしでC#にタイプ依存ロジックを実装するにはどうすればよいですか?

Linda Hamilton
リリース: 2025-01-28 15:16:09
オリジナル
181 人が閲覧しました

How Can We Implement Type-Dependent Logic in C# Without a Direct

c# 's'スイッチオンタイプ '

の制限を超えて

c#は「タイプオン」ステートメントを直接サポートしていません。この制限は、型階層の固有のあいまいさから生じます。オブジェクトは、複数のケースと一致する可能性があります。 ただし、タイプに依存するロジックを実現するために、いくつかのエレガントな回避策が存在します

パターンマッチングのレバレッジ(C#7以降)ステートメント内でタイプベースのロジックを処理するための簡潔で読みやすい方法を提供します。 例を遵守してください:

switchタイプ名ベースのスイッチング(C#6以降)c#6以降のバージョンは

<code class="language-csharp">switch (shape)
{
    case Circle c:
        Console.WriteLine($"Circle with radius {c.Radius}");
        break;
    case Rectangle s when (s.Length == s.Height):
        Console.WriteLine($"{s.Length} x {s.Height} square");
        break;
    case Rectangle r:
        Console.WriteLine($"{r.Length} x {r.Height} rectangle");
        break;
    // ... more cases
}</code>
ログイン後にコピー
オペレーターを提供し、タイプの名前に基づいてスイッチを有効にします:

文字列ベースのスイッチング(C#5以前)

nameof()

古いC#バージョン(5以下)の場合、タイプ名を使用した文字列ベースのスイッチが必要です。
<code class="language-csharp">switch (o.GetType().Name)
{
    case nameof(AType):
        // Handle AType
        break;
    case nameof(BType):
        // Handle BType
        break;
}</code>
ログイン後にコピー

これらの方法は「タイプのスイッチ」を効果的に模倣しますが、専用の言語機能と同じレベルの優雅さや保守性を常に提供するとは限りません。 選択は、C#バージョンとコードの明確さの目的のレベルに依存します。

以上が直接「スイッチオンタイプ」機能なしでC#にタイプ依存ロジックを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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