Sapete perché il seguente codice C# non da errori a runtime mentre il corrispondente VB .NET sì (System.OverflowException)?
C# |
VB .NET |
int a = int.MaxValue; int b = a + 1; |
Dim a As Integer = Integer.MaxValue Dim b As Integer = a + 1 |
Semplicemente perché il compilatore C# traduce la somma nell'istruzione IL add, mentre il compilatore VB .NET la traduce nell'istruzione add.ovf (come add ma con la verifica di overflow). Più performante, ovviamente, la variante C#.
Spiegazione letta nel libro di Robinson (p. 21).