隐式转换问题和null

时间:2010-01-06 01:27:11

标签: c# operator-overloading implicit-conversion

我有这个功能

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

1 个答案:

答案 0 :(得分:5)

我认为您的问题是三元运算符的两边必须是相同或兼容的类型。

尝试写作

if (v == null)
    return null;
else
    return new MyClass(v);

编辑:如果我将MyClass作为结构,我只能重现您的问题,在这种情况下您的问题是不可能的;结构不能为空。

请提供更多详情。