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

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

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

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

“不允许在接口之间进行用户定义的转换”

谢谢,

C#规范的第10.9.3节解释了这一点。 简短版本是不允许的,以便用户可以确定引用类型和接口之间的转换是成功的,当且仅当引用类型实际实现该接口时,并且当转换发生时实际引用相同的对象时。

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

不允许用户定义的转换从接口类型转换或转换为接口类型 。 特别是,此限制确保在转换为接口类型时不会发生用户定义的转换,并且只有在转换的对象实际实现指定的接口 类型时,才能成功转换为接口类型