|
C#言語仕様 7.3.6 Numeric promotions によりますと 二項演算☆には以下のルールがあらかじめ定義されていて: int operator ☆(int x, int y); uint operator ☆(uint x, uint y); long operator ☆(long x, long y); ulong operator ☆(ulong x, ulong y); float operator ☆(float x, float y); double operator ☆(double x, double y); decimal operator ☆(decimal x, decimal y);
上記以外の型 x, y に対する演算では 暗黙の型変換が施された後に 上記演算が行われるみたい。
で、今回 short * short ですからこのルールに従い int * int となり、結果は int です。
そいつを short に書き戻す際、short から int へは 暗黙の変換が行われないため、
> 型 'int' を 'short' に暗黙的に変換できません。明示的な変換が存在します。 > (cast が不足していないかどうかを確認してください)
となるみたいっすよ。
|