That's not true.
The problem usually arises because none activates the checking options on numerical operations.
By default, you implicitly accept that operations on numbers could roll-over, overflows, etc.
Yes, turning on overflow checking would help find the problem. Is this available on Compact Framework projects? I can't find it.
Also, in at least some implementations (if not all), this is still not a compile-time check, but a runtime check, IIRC.
It does not matter to implement that function, but it would solve the problem I have posted above.
On a PC you won't care about it, but on a small device where the performance is important, the ability to access the field of a structure as fast as possible I think it's important.
Actually there's no way in C#, unless you create a custom function just to do it.
Upon this point (that I raised), I'd agree with Eric Lippert of MS, that often explains us the ratio of benefits/costs of some feature.
I'm not sure what you're getting at. The code example you gave does work (with a few fixes).
class SA { public int A { get; set; } public int B { get; set; } public static void Method() { SA[] sa = new SA[10]; sa[3] = new SA(); sa[3].A = 123; var s = sa[3]; s.B = 456; //won't work! } }
If you mean accessing an object without the "unboxing" you get with a reference, you can make the declaration using struct instead of class (DateTime is an example).
EDIT: Corrected the spelling of "struct"