为什么我不能使用带有显式运算符的接口?

发布于 2024-08-24 21:28:51 字数 192 浏览 6 评论 0原文

我只是想知道是否有人知道不允许您使用带有隐式或显式运算符的接口的原因?

例如,这会引发编译时错误:

public static explicit operator MyPlayer(IPlayer player)
{
 ...
}

“不允许用户定义的接口转换”

谢谢,

I'm just wondering if anyone knows the reason why you are not allowed to use interfaces with the implicit or explicit operators?

E.g. this raises compile time error:

public static explicit operator MyPlayer(IPlayer player)
{
 ...
}

"user-defined conversions to or from an interface are not allowed"

Thanks,

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

七月上 2024-08-31 21:28:51

C# 规范第 10.9.3 节这个出来了。简而言之,这是不允许的,以便用户可以确定引用类型和接口之间的转换当且仅当引用类型实际实现该接口时才会成功,并且当该转换发生时实际上正在引用同一个对象。

定义引用类型之间的隐式或显式转换使用户期望引用会发生变化;毕竟,同一个引用不能同时是两种类型。另一方面,用户对于引用类型和接口类型之间的转换没有有相同的期望。

不允许用户定义的转换在接口类型之间进行转换。接口类型。特别是,此限制可确保在转换为接口类型时不会发生用户定义的转换,并且仅当对象为接口类型时,转换才会成功转换后实际上实现了指定的接口类型

Section 10.9.3 of the C# spec spells this out. The short version is that it's disallowed so that the user can be certain that conversions between reference types and interfaces succeed if and only if the reference type actually implements that interface, and that when that conversion takes place that the same object is actually being referenced.

Defining an implicit or explicit conversion between reference types gives the user the expectation that there will be a change in reference; after all, the same reference cannot be both types. On the other hand, the user does not have the same expectation for conversions between reference types and interface types.

User-defined conversions are not allowed to convert from or to interface-types. In particular, this restriction ensures that no user-defined transformations occur when converting to an interface-type, and that a conversion to an interface-type succeeds only if the object being converted actually implements the specified interface-type.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文