Well, *I* didn't say it but yes. Unsafe disables bounds checking (which in this case is safe). I think you can just stick an unsafe{} in the C# version to disable them.
Oh well that's not good. Yes, you can use unsafe in C# too, but you know there are reason why we use C# instead of C++, and one of those reasons is precisely to avoid stack/heap corruption.