隐式转换和 null 的问题
我有这个函数
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); }
但这会导致堆栈溢出
I have this function
public static implicit operator MyClass(string v) { return new MyClass(v); }
and write var.myclass = null;. This calls the implicit operator and passes null as string, which causes havoc in my code (i use reflection and would not like to add a special case). How can i write myclass = null without causing the implicit operator?
I tried writing
public static implicit operator MyClass(string v) { return v == null ? null : new MyClass(v); }
But that causes a stackoverflow
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我相信你的问题是三元运算符的两边必须是相同或兼容的类型。
尝试编写
编辑:如果我将
MyClass
作为一个结构,我只能重现您的问题,在这种情况下您的问题是不可能的;结构不能为空。请提供更多详细信息。
I believe that your problem is that both sides of the ternary operator must be of the same or compatible types.
Try writing
EDIT: I can only reproduce your issue if I make
MyClass
a struct, in which case your question is impossible; a struct cannot be null.Please provide more details.