I tested this, and it works just as expected:
private class Test {
private int _pi = 0;
public int Pi { get { return _pi; } set { _pi = value; } }
}
Test test = new Test();
int a = test.Pi;
int b = ++test.Pi;
int c = test.Pi;
a contains 0, b contains 1, c ontains 1.
There is no unary plus operator in C#, so ++i can not be interpreted as +(+i).
I have actually used a unary operator more than once in a (more or less) valid implementation in Javascript:
var IE = !!document.all;
instead of:
var IE;
if (document.all) {
IE = true;
} else {
IE = false;
}