形成方法と列挙タイプの制約
目標は、
関数を拡張し、マッチングのマッチング値が見つからない場合にデフォルト値を許可する一般的な関数を作成することです。この関数は、ケースによって区別されるべきではありません。
ただし、次のコード定義関数を使用しようとしている場合:Enum.Parse
エラーが発生し、制約が特別なクラス(System.Enum)になることはできないことを指摘します。
<code class="language-csharp">public static T GetEnumFromString<T>(string value, T defaultValue) where T : Enum { // 实现... }</code>解決策:
このエラーを解決し、一般的な列挙の使用を許可するために、制約を変更できます。 この更新後の制約により、Tは構造であることを保証し、列挙によって実装されるICONVERTIBLEインターフェイスもサポートします。
改善された実装:
<code class="language-csharp">public static T GetEnumFromString<T>(string value, T defaultValue) where T : struct, IConvertible</code>
次の変更されたコードは、改善の改善を示しています:
このメソッドは一般的な列挙タイプを受け入れ、完全に安全であり、効果的な列挙値のみが返されるようにします。 の使用は、異文化の正しさを保証します。
以上がc#のデフォルト値で列挙文字列を安全に解析する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。