Does C# do array bounds checking?

Yes. An IndexOutOfRange exception is used to signal an error.