One question we occasionally get is why we didn't introduce C-style increment (++) and decrement (--) operators into the language when we introduced the compound operators (i.e. += and -=). We did consider it, but:

  1. Assignment in VB is always done at the statement level and not the expression level. Introducing a ++ statement and -- statement seemed pretty redundant. If you're going to have "x++" as a statement, why not just use "x += 1"?
  2. If we introduced ++ and -- as assignment expressions, then it would be weird not to allow general assignment expressions. For example, in C#, you can say "if ((x = foo()) == 10) {}" and have the assignment done as part of evaluating the if expression. The problem, as you might have already guessed, is that we already use the = operator in expressions for testing value equality. Thus, there would be no easy way to introduce general assignment expressions into the language, which would make it strange that we had -- and ++.
  3. Even if we ignored the weirdnesses inherent in having increment and decrement with no assignment, the operators' main function in C often times seems to be to encourage programmers to write arcane and brittle code. Besides the confusion in meaning between prefix and postfix, the increment/decrement operators usually depend on the order of evaluation of expressions. Which requires remembering the order of evaluation in a particular language, which isn't always very obvious. For example, in C, what do the following expressions result in? It really depends on the order in which the expressions happen to be evaluated.
a[b++] = b
a[b] = ++b
foo(b++, ++b, b++, ++b)

Overall, we felt we were better off just leaving the increment and decrement operators alone.