5 c# operator-overloading implicit-conversion
我有这个功能
public static implicit operator MyClass(string v) { return new MyClass(v); }
Run Code Online (Sandbox Code Playgroud)
并写var.myclass = null;.这会调用隐式运算符并将null作为字符串传递,这会在我的代码中造成破坏(我使用反射并且不想添加特殊情况).如何在不引起隐式运算符的情况下编写myclass = null?
我试着写作
public static implicit operator MyClass(string v) { return v == null ? null : new MyClass(v); }
Run Code Online (Sandbox Code Playgroud)
但这会导致堆栈溢出
我相信你的问题是三元运算符的两边必须是相同或兼容的类型.
试着写
if (v == null)
return null;
else
return new MyClass(v);
Run Code Online (Sandbox Code Playgroud)
编辑:如果我制作MyClass一个结构,我只能重现你的问题,在这种情况下你的问题是不可能的; 结构不能为空.
请提供更多详情.