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,在这种情况下你的问题是不可能的;结构不能为空。

请提供更多详细信息。

于 2010-01-06T01:33:38.293 回答