ホームページ > バックエンド開発 > C++ > パターンは、C#の従来のタイプベースのスイッチングに代わる優れた代替品ですか?

パターンは、C#の従来のタイプベースのスイッチングに代わる優れた代替品ですか?

Barbara Streisand
リリース: 2025-01-28 15:21:09
オリジナル
598 人が閲覧しました

Is Pattern Matching a Superior Alternative to Traditional Type-Based Switching in C#?

C#のパターンは、従来のタイプベースのスイッチングよりも優れていますか?

c#の「タイプによるスイッチング」をサポートしていない言語では、プログラマーは通常、クラシック「if ... else ... else ... else」構造を使用してタイプベースのスイッチングをシミュレートします。ただし、タイプの数が増えると、この方法は長く壊れやすくなります。

c#7およびより高いバージョンモードマッチ たとえば:

c#6 nameof()

を使用します

c#6では、nameof()コンピューティングシンボルを使用して、スイッチステートメントのタイプ名を動的に取得できます。パターンほど単純ではありませんが、ハードコーディングタイプ名を避けるために、より簡単な - 再構築の代替品を提供します。

c#5および以前のバージョンベースのスイッチング
void Foo(object o)
{
    switch (o)
    {
        case A a:    // 匹配A类型
            a.Hop();
            break;
        case B b:    // 匹配B类型
            b.Skip();
            break;
        default:
            throw new ArgumentException("意外类型: " + o.GetType());
    }
}
ログイン後にコピー

C#5および以前のバージョンの場合、ハードコーディングタイプ名を持つ基本的な「if ... else ... else ... else ... else ... else」構造を使用する以外に選択肢はありません。この方法は厄介で間違いを犯すのが簡単になるかもしれません。

<论>結論

void Foo(object o)
{
    switch (o.GetType().Name)
    {
        case nameof(A):
            // 处理A类型
            break;
        case nameof(B):
            // 处理B类型
            break;
        default:
            // 处理其他类型
            break;
    }
}
ログイン後にコピー
C#7およびより高いバージョンモードマッチングは、シミュレーションベースのスイッチングの強力で簡潔な方法を提供します。状態チェーンの需要を排除し、コードの読みやすさを改善し、エラーの可能性を減らします。 C#の初期バージョンの場合、nameof()とswitchステートメントを使用して、ハードコーディングタイプ名よりも柔軟な代替品が提供され、クラシックな「if ... else ... else ... else」構造はまだ理想的ではなく、実行可能な選択肢があります。

以上がパターンは、C#の従来のタイプベースのスイッチングに代わる優れた代替品ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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