gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 05:27:43 25 4
gpt4 key购买 nike

我真正想要实现的是:为对象引入一个全局别名。

由于 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 节:

A class or struct is permitted to declare a conversion from a source type S to a target type T only if all of the following are true:

  • ...
  • Exclusing user-defined conversions, a conversion does not exist from S to T or from T to S

您的情况并非如此,因此会出现错误。

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

关于c# - cs0553 不允许从基类进行用户定义的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17459233/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com