为什么microsoft没有为stringbuilder重载+ =运算符?

对于StringBuilder类,为什么不重载+ =运算符而不是使用唯一的.Append()方法?

Append()只连接字符串,为什么它们不只是像这样重载+ =运算符:

StringBuilder sb = new StringBuilder(); sb += "My string"; 

这是效率的情况吗? 这是一个传统或直观的案例吗?

谢谢,

算术运算应限于类似于算术值的类型。 两个字符串的总和是第三个字符串是很糟糕的。 将加法运算与字符串连接相关联是一个值得怀疑的选择,因为字符串连接遵循很少的加法规则; 特别是, a + b != b + a

但是去那里寻找字符串构建器 – 根据定义可变状态而不是算术值 – 是可怕的两件事的总和应该是与两个加法不同的第三件事。 也就是说, a += b 必须具有与a = a + b相同的语义而不是a.MutateWith(b)如果最后没有对a的赋值,那么复合赋值是错误的运算符。

更一般地说: 永远不要让可爱的操作员超载 。 操作员超载是存在的,这样你可以将两个复杂的数字加到第三个,而不是让你可以让顾客加一jar花生酱等于采购订单,或者一些这样的愚蠢。