是否可能使“as”或“is”运算符超载

时间:2011-01-20 14:50:21

标签: c# casting operator-overloading implicit-conversion explicit-conversion

这是允许的吗?如果没有,这可以通过重载隐式/显式转换运算符来固有地完成吗?

3 个答案:

答案 0 :(得分:15)

  

是否允许“is”和“as”运算符超载?

没有

  

如果没有,这可以通过重载隐式/显式转换运算符来固有地完成吗?

没有。 “as”和“is”运算符告诉你实际上是什么。他们不关注用户定义的转换。

http://blogs.msdn.com/b/ericlippert/archive/2009/10/08/what-s-the-difference-between-as-and-cast-operators.aspx

http://blogs.msdn.com/b/ericlippert/archive/2010/09/16/is-is-as-or-is-as-is.aspx

关于“as”和“is”运算符的更多想法。

答案 1 :(得分:5)

没有。检查一下: Overloadable Operators 这个All C# operators

答案 2 :(得分:0)

不,因为他们不是这样的运营商,所以他们是该语言的关键词。

另外,我不确定你会将它们重载为什么并仍然保留语言规范的语义?似乎它只能用于巨大的邪恶:)