The C# language specification defines the empty-statement grammar production, which allows me to do something like this:
static void Main(string[] a
C# inherits a lot from the C family, where you can do things like
for (i = 0; i < n; v[i++] = 1);
or
while (testSomeCondition());
That is, run a loop with an empty body where the "meat" is inside the brackets.
While one can debate about their merits and dangers, these are pretty common programming idioms in the C programming world, so this backward compatibility makes it easier for C/C++/Java programmers to learn C#.