値を持つ列挙型があり、その列挙型を Nullable に設定しました。これは、MyEnum.NotAvilable 状態を追加したくないという事実によるものです。私の問題は、この列挙型を関数のパラメーターとして送信したときに始まります。次のメッセージが表示されます。
"The best overloaded method .."
これは、列挙型が nullable であるためだと思います。機能する唯一のことは、列挙型を関数に送信するときに、列挙型を MyEnum にキャストするか、foo の署名を変更して MyEnum を受け入れるかどうかです。MyEnum ではありません。
列挙型が定義されています:
public MyEnum? Test
署名付きの関数の呼び出し: private void Foo(MyEnum value)
Foo(MyEnum value); // not working
Foo(MyEnum? value); // works
私の質問は - Foo に送信する前に MyEnum にキャストするのは悪い習慣ですか?
if (value.HasValue)
Foo((MyEnum) value); //this makes Foo(MyEnum value) valid