在以下幾點:一元減一個變成了一個整數?
public class p
{
short? mID;
short? dID;
}
short id = p.mID ?? -p.dID.Value;
編譯器給我的錯誤:
Error 21 Cannot implicitly convert type 'int' to 'short'. An explicit conversion exists (are you missing a cast?)
我的代碼更改爲以下,它的工作:
short id = p.mID ?? (short)-p.dID.Value;
這是因爲如果編譯器正在執行像(int)0 - p.dID.Value之類的操作,或者Int16.operator正在返回Int32s ...?
很好的回答;謝謝!不過,我不得不想知道爲什麼沒有定義短褲的一元減算子。任何理論? – rabidpebble
@rabidpebble當然,對於(所有?)二元運算符,這也是一樣的。例如'p.mID + p.mID','p.mID/p.mID','p.mID&p.mID'和其他許多類型都將具有類型'int',即使兩個操作數都是'short' 。 –