Heim >Backend-Entwicklung >C++ >Warum funktioniert „a = b', während „a = a b' fehlschlägt, wenn „a' und „b' in C# „kurz' sind?
C# short
Arithmetik: Eine Feinheit
Direktes Hinzufügen von zwei short
Variablen in C#, etwa so:
<code class="language-csharp">short a, b; a = 10; b = 10; a = a + b; // Error: Cannot implicitly convert type 'int' to 'short'</code>
erzeugt einen Compilerfehler. Der Grund? Die Summe zweier short
-Werte wird implizit zu einem int
heraufgestuft. Das Zuweisen eines int
zu einer short
-Variable erfordert eine explizite Umwandlung, die in diesem Code fehlt.
Überraschenderweise funktioniert der zusammengesetzte Zuweisungsoperator =
fehlerfrei:
<code class="language-csharp">a += b; // Works correctly</code>
Warum der Unterschied?
Das =
Operator's Secret
Der =
-Operator ist nicht einfach nur syntaktischer Zucker; Es handelt sich um eine sorgfältig gestaltete Sprachfunktion. Obwohl es funktional mit a = a b
identisch ist, wird es vom Compiler anders behandelt. Die C#-Spezifikation schreibt vor, dass zusammengesetzte Zuweisungsoperatoren eine implizite Konvertierung vom Ergebnis der Operation in den Typ des linken Operanden durchführen.
Im Wesentlichen wird a = b
implizit als a = (short)(a b)
behandelt. Der Compiler fügt automatisch die erforderliche Umwandlung in short
ein und verhindert so den Typkonfliktfehler.
Dieses implizite Casting ist ein entscheidender Aspekt des C#-Designs. Ohne sie würden viele gängige arithmetische Operationen mit kleineren Ganzzahltypen eine explizite Umwandlung erfordern, was den Code erheblich komplexer machen würde.
Kurz gesagt (Wortspiel beabsichtigt)
Das Kernproblem ist die implizite Typförderung von short short
zu int
. Der =
-Operator umgeht dies geschickt, indem er eine implizite Umwandlung einbezieht, was ihn zu einer bequemen und effizienten Möglichkeit macht, arithmetische Operationen an kleineren Ganzzahltypen ohne explizite Typkonvertierungen durchzuführen.
Das obige ist der detaillierte Inhalt vonWarum funktioniert „a = b', während „a = a b' fehlschlägt, wenn „a' und „b' in C# „kurz' sind?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!