C# の列挙型制約: 包括的な説明
C# では、型制約により、開発者はメソッドまたはプロパティ パラメーターに許可される型を制限できます。 。 enum 型は C# の基本ですが、組み込みの型制約がありません。この設計上の決定は多くのプログラマーを困惑させ、その理論的根拠についての問い合わせを促しています。
C# の制限はなぜですか?
参照型とは異なり、列挙型は値型であり、それぞれが定数を表します。定義されたセット内の値。列挙型に型制約を適用すると、次のような複雑な問題が発生します。
回避策:
C# ではネイティブに列挙型の制約が許可されていませんが、巧妙な回避策が発見されました。ジェネリックス、特に Enum クラスを使用すると、文字列値を受け入れて目的の型の enum に変換できる Parse のようなメソッドでカスタム型 Enums を作成できます。この方法は、固有の欠点がなく、型制約と同じ効果を実現します。
この回避策を使用するための構文は次のとおりです。
public static TEnum Parse<TEnum>(string name) where TEnum : struct, Enum { return (TEnum)Enum.Parse(typeof(TEnum), name); }
これを使用するには、次のように呼び出します。
>Enums.Parse<DateTimeKind>("Local")
制限事項:
この間回避策は解決策を提供しますが、次のような制限があります。
これらにもかかわらずこの回避策により、開発者は C# の enum 型制約と同様の機能を実現できるため、より厳密なパラメーター チェックを適用し、コードを強化できるようになります。品質。
以上がC# が列挙型制約をサポートしないのはなぜですか?また、どのような回避策がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。