No increment operator in VB.net
I would say that the language designers simply thought that BASIC was a better baseline than C, when designing Visual BASIC. You can follow the lineage of C
(and, earlier, BCPL
) through C++
, Java
and C#
.
The VB
lineage comes from the original BASIC
from Dartmouth (and, earlier, Fortran
) and is a different beast altogether.
In other words, what started as the venerable BASIC
:
LET I = I + 1
has probably been hacked and destroyed enough :-)
As per Eric's post, i++;
is indeed just an expression, one that yields i
with the side effect that i
is incremented after the event (similar to the non-side-effect expression i;
).
That's because C
allows these naked expressions, even things like 42;
which doesn't really do much but is perfectly valid. In other words, the following is a complete C
program:
int main (void) { 1; 2; 3; 4; 5; 6; 7; 8; 9; return 0; }
All those expressions are valid but useless (except the 0
at the end of course).
In BASIC
, this was not really done, because BASIC
consisted of statements (things that did something). That's why i += 1
(a statement incrementing i
) is considered okay, but i++
(an expression doing nothing which just happens to have a side effect which increments i
) isn't. You could argue that it's just semantic hair-splitting but that's just the way it is.
You should be thankful for small mercies, at least you're not having to deal with COBOL:
ADD 1 TO DD_WS_I.
Simply because the designers thought that i++
is unnecessary when you have i += 1
.
For
loops don't need either one, so you don't lose anything.
It's Visual Basic after all... why make it complicated?