還要注意的是+
是可重載運營商,無論是一元和二元之一。所以,你可以例如有:
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