The increment operator is supposed to leave the original value unchanged, and return an incremented copy of it. However, in your implementation, you're mutating the aWord
passed in as an argument.
E.g., the following code uses the post-fix increment operator and expects oldValue.NumValue
to be 0, but with your current implementation it will be 1.
AsciiWord aWord = new AsciiWord { NumValue = 0 };
AsciiWord oldValue = aWord++;
Assert.Equal(0, oldValue.NumValue); // fails
int i = 0;
int oldIntValue = i++;
Assert.Equal(0, oldIntValue); //passes
In other words - AsciiWord
should be deeply immutable.