还要注意的是+
是可重载运营商,无论是一元和二元之一。所以,你可以例如有:
class MySillyType
{
int _value;
public MySillyType(int value)
{
_value = value;
}
public static int operator +(MySillyType t)
{
return t._value;
}
}
然后string.Format("{0}", new MySillyType(42))
会给你MySillyType
,而string.Format("{0}", +new MySillyType(42))
给42
。例如,在使用强类型ID时,这可能会被滥用(例如,使用OrderId
类型代替int
) - 您不希望拥有隐式投射操作符(这种操作违背了目的的一半),但执行(int)orderId
是太具体,并且orderId.Value
太明显,可能是:D而且由于一元+
不会在大多数用途中更改该值,所以不是那大部分的滥用,可以说。
它看起来在C#傻,而是“经营者滥用”是不是即使在许多函数式编程语言的一个概念 - 运营商都只是较短的函数名:d
它可以作为从传统的代码转换的一部分当然,也是如此。很容易将+
应用于任何变量等,并独立重写部分代码 - 对于int
,它将什么都不做,对于MySillyId
它会给你int
回来。最终,您将删除所有普通的int
,您也可以删除操作员超载 - 完成任务。
但是,不建议。这是一个有点傻:d
可以肯定地说'apiChannel.ChannelID'是一个数值类型吗? – 2015-02-24 08:48:26
“apiChannel.ChannelID”的任何示例? – chouaib 2015-02-24 08:48:34
'ChannelID'是一个数字吗?然后'+'本质上是一个不适用 – 2015-02-24 08:48:35