【发布时间】:2010-01-06 01:27:11
【问题描述】:
我有这个功能
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); }
但这会导致堆栈溢出
【问题讨论】:
-
MyClass 是一个结构体吗?你的构造函数接受什么参数?
-
你能把它写成显式运算符吗?
-
我无法重现您的问题;您可能还有其他问题。
-
d'哦,这是有道理的。你不能有一个空结构。
标签: c# operator-overloading implicit-conversion