0

当我尝试将返回类型转换为对象或我自己定义的一种自定义类型时,为什么隐式运算符会出现问题?

当我尝试转换并返回像这样的简单类型时,我没有问题int,就像这样

public static implicit operator int(MyClass a)
        {
            return 123;
        }

但是,当我尝试将类型转换为对象或自定义类型时,会出现错误。例如,如果我有这样的事情,我会得到一个编译时错误,说“用户定义的转换为 System.Object ”:

public static implicit operator object(MyClass a)
{
   return new {};
}

如果我有这个,我会得到同样的错误:

public static implicit operator CustomTestObject(MyClass a)
{
   return new CustomTestObject();
}

使用隐式运算符时,如何将其转换为我自己的自定义类型以返回?

4

1 回答 1

5

您不能声明到您自己的基类之一的隐式转换。System.Object始终是您的(直接或间接)基类。通过继承,已经有到基类的隐式转换。那么怎么会有两个隐式转换呢?C# 规范有一个很好的理由来禁止这一点!

于 2012-12-30T21:13:49.363 回答