我有这个功能
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); }
但是这导致了stackoverflow
答案 0 :(得分:5)
我认为您的问题是三元运算符的两边必须是相同或兼容的类型。
尝试写作
if (v == null)
return null;
else
return new MyClass(v);
编辑:如果我将MyClass
作为结构,我只能重现您的问题,在这种情况下您的问题是不可能的;结构不能为空。
请提供更多详情。