Car*_*ven 0 c# implicit-conversion
当我尝试将返回类型转换为对象或我自己定义的一个自定义类型时,为什么隐式运算符会出现问题?
我有当我尝试转换并返回一个简单类型就像一个没有问题的int,像这样的
public static implicit operator int(MyClass a)
{
return 123;
}
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试将类型转换为对象或自定义类型时,我将收到错误.例如,如果我有这样的事情,我将得到编译时错误" 用户定义的转换为System.Object ":
public static implicit operator object(MyClass a)
{
return new {};
}
Run Code Online (Sandbox Code Playgroud)
如果我有这个,我会得到同样的错误:
public static implicit operator CustomTestObject(MyClass a)
{
return new CustomTestObject();
}
Run Code Online (Sandbox Code Playgroud)
当使用隐式运算符时,如何将其转换为我自己的自定义类型以便返回?
您不能声明隐式转换为您自己的基类之一.System.Object永远是你的(直接或间接)基类.通过继承,已经隐式转换为基类.那怎么会有两个隐含的转换呢?C#规范有很好的共鸣,不允许这样做!