C# の列挙型制約: 制限について理解
C# では、一般に型制約はジェネリック パラメーターの型を制限するために使用されます。ただし、注目すべき例外の 1 つは列挙型であり、これは制約できません。このため、多くの開発者はこの制限の背後にある理由について疑問を抱いています。
列挙型制約がない理由
正確な理由は議論されていますが、いくつかの要因が考えられています。この決定に影響を与えた:
制限の克服
直接の enum 制約がないにもかかわらず、抽象基本クラスとネストされたクラス:
public abstract class Enums<Temp> where Temp : class { public static TEnum Parse<TEnum>(string name) where TEnum : struct, Temp { return (TEnum)Enum.Parse(typeof(TEnum), name); } } public abstract class Enums : Enums<Enum> { } Enums.Parse<DateTimeKind>("Local")
このアプローチでは、抽象基本クラスを定義します。 (Enums
拡張メソッドの制限
この回避策では enum 型のチェックが可能ですが、拡張機能の作成には使用できません。メソッド。この制限は、拡張メソッドがクラスのジェネリック型引数にアクセスできないという事実に起因しています。
以上がC# ジェネリックで列挙型制約を使用できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。