cs0553不允许从基类进行用户定义的转换

时间:2013-07-03 22:40:19

标签: c# type-conversion

我真正想要实现的目标:为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)

1 个答案:

答案 0 :(得分:2)

嗯,你做不到。从C#4规范的第10.10.3节开始:

  

只有满足以下所有条件时,才允许类或结构声明从源类型S到目标类型T的转换:

     
      
  • ...
  •   
  • 排除用户定义的转化,从ST或从TS
  • 不存在转换   

在你的情况下不是这样,因此错误。

你还没有说为什么你想要这样做(你提到“没有全局别名”,但你不清楚你想要实现的目标),但你不能这样做。您可以创建构造函数或静态方法来创建类的实例,但不能使用运算符。