我有这个功能
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); }
但这会导致计算器溢出
最佳答案
我相信你的问题是三元运算符的两边必须是相同或兼容的类型。
尝试写作
if (v == null)
return null;
else
return new MyClass(v);
编辑:如果我将 MyClass
设为结构,我只能重现您的问题,在这种情况下,您的问题是不可能的;结构不能为空。
请提供更多详细信息。
关于c# - 隐式转换和 null 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2010407/