public static explicit operator Int64(MyNumber n) { return n.ToInteger(); } public static explicit operator Double(MyNumber n) { return n.Todouble(); }
两种方法具有相同的名称和签名,但只有它们的返回类型不同,例如
public static Int64 ExplicitCast(MyNumber n) ... public static Double ExplicitCast(MyNumber n) ...
但是,我们不允许只有返回类型的方法.窗帘后面会发生什么?
解决方法
您不能拥有多个具有相同名称且只有不同返回类型的方法的限制是C#的限制. IL语言(即.NET虚拟机的语言)没有此限制.
参见例如:https://stackoverflow.com/a/442100/613130
Some languages (such as MSIL),however,do allow overloading by return type. They too face the above difficulty of course,but they have workarounds,for which you’ll have to consult their documentation.
和https://blogs.msdn.microsoft.com/abhinaba/2005/10/07/c-cil-supports-overloading-by-return-type/
However,CIL does support overloading methods by return types,even though C#,VB does not . To implement convertion operator overloading C# compiler uses this feature (I kNow of one usage and I’m sure that there are more
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。