5

私はこの機能を持っています

public static implicit operator MyClass(string v) { return new MyClass(v); }

var.myclass = null; と記述します。これは暗黙の演算子を呼び出し、null を文字列として渡すため、コードに大混乱が生じます (私はリフレクションを使用しており、特別なケースを追加したくありません)。暗黙の演算子を発生させずに myclass = null と書くにはどうすればよいですか?

書いてみた

public static implicit operator MyClass(string v) { return  v == null ? null : new MyClass(v); }

しかし、それはスタックオーバーフローを引き起こします

4

1 に答える 1

5

あなたの問題は、三項演算子の両側が同じか互換性のある型でなければならないことだと思います。

書いてみてください

if (v == null)
    return null;
else
    return new MyClass(v);

編集:構造体を作成した場合にのみ問題を再現MyClassできます。その場合、質問は不可能です。構造体をnull にすることはできません。

詳細をお知らせください。

于 2010-01-06T01:33:38.293 に答える