【发布时间】:2013-02-26 17:23:14
【问题描述】:
我对 C# 中的运算符重载的概念有疑问。 我们可以重载少数运算符,而少数不能重载。 限制少数运算符重载是否有任何特殊原因。 如果是这样,谁能解释一下原因。
【问题讨论】:
-
你想要哪些运算符重载你不能重载?
-
为什么说“很少”?您实际上在谈论哪些运营商?
-
@G_S:超载
?:意味着是什么意思?同上赋值,真的......你可以重载转换运算符,最终可以在赋值语句中使用...... -
G_S,试着写下“重载
?: operator”的行为。纯粹为自己做,不要因为忽略极端情况而作弊。如果需要对字符串/数组进行特殊处理,至少不要忘记值和引用类型、可空类型的基本情况。不要忘记与隐式/显式转换的关系,确保涵盖返回类型......而不是阅读结果描述 - 如果它导致“地球上谁能够理解” - 这是你的答案......跨度> -
我试图表明,如果对行为的解释比几句话长(当你允许自定义行为时总是这种情况,包括选择正确的重载行为的规则)它需要 very 包含在语言中的充分理由。 IE。 “+”和其他数学运算符对于“代数类型”(数字、向量、矩阵...)具有非常明确的含义——因此有充分的理由允许重载。另一方面,
?:或.在编程之外没有定义的行为 - 允许重载的情况要弱得多。