C# の short = short
動作を理解する
C# で 2 つの short
変数を直接追加すると、潜在的なオーバーフローにより int
が発生し、結果を short
:
<code class="language-csharp">Error: Cannot implicitly convert type 'int' to 'short'.</code>
しかし、複合代入演算子 =
を使用すると、驚くほどうまくいきます。
<code class="language-csharp">short a = 10; short b = 20; a += b; // This compiles and runs without error. Why?</code>
違いの背後にある理由
重要なのは、C# コンパイラーが複合代入演算子をどのように処理するかにあります。 2 つの short
値を加算すると int
が生成されますが、 =
演算子は代入の前に int
の結果を暗黙的に short
にキャストして戻します。 これは以下と同等です:
<code class="language-csharp">a += b; // Is the same as: a = (short)(a + b);</code>
この暗黙的なキャストにより、明示的な変換エラーが回避され、一般的な算術演算の簡潔なコードが可能になります。 コンパイラは基本的に、変換に関連する潜在的なデータ損失を処理します。 この動作は、便宜を図り、他の言語の同様の演算子の機能を反映するように設計されています。 コンパイラーの最適化により、より冗長なコードの必要性が回避されます。
以上が暗黙的な変換エラーがあるにもかかわらず、C# で「short = short」が機能するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。