c# - 隐式转换和 null 的问题

标签 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); }

但这会导致计算器溢出

最佳答案

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

尝试写作

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

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

请提供更多详细信息。

关于c# - 隐式转换和 null 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2010407/

相关文章:

c# - 如何使用 Newtonsoft.Json 反序列化空 JSON 对象?

c++ - 我们如何区分使用重载的 [] 运算符来获取和设置?

c++ - 为什么在 std::string 上重载 "operator <<"不起作用?

C++ vector 运算符+/-,去重

c - 这个指针应该这样操作吗?基础C

.net - 列表泛型 - 隐式转换

c++ - 摆脱错误 C2243

c# - 尝试让一个对象查看 Unity 中的另一个对象

c# - 统一通用接口(interface)和具体类

c# - 数据为空 无法在空值上调用此方法或属性 错误不断出现