cs0553不允许从基类进行用户定义的转换
我真正想要实现的目标:为object
引入一个全局别名。
由于C#中没有全局别名,我想通过提供另一个可以隐式转换所有对象的类myclass
来解决这个问题,例如:
myclass foo () { return new object(); } // should be ok myclass bar () { return "bla"; } // should be ok
如何?
(转换运营商:
public static implicit operator myclass(object o) { return new given(); }
只输出编译器错误cs0553)
好吧,你做不到。 从C#4规范的第10.10.3节:
仅当满足以下所有条件时,才允许类或结构声明从源类型
S
到目标类型T
的转换:
- …
- 排除用户定义的转换,从
S
到T
或从T
到S
不存在转换
在你的情况下,这不是真的,因此错误。
你还没有说你为什么要这样做(你提到“没有全局别名”但你不清楚你想要实现的目标),但你不能这样做。 您可以创建构造函数或静态方法来创建类的实例,但不能使用运算符。