It is not possible to overload the operator for the array type, or change its definition; that can only be done from the definition of that type, which you can't control.
What you can do is create your own type that wraps the array, and that overloads the operators that you want:
public class Matrix<T>
{
private T[] array;
public T this[int row, int column]
{
get { return array[row + column]; }
}
}
Whether or not the performance difference (which should be small, but not nothing) are an issue for your program is something that you're going to need to profile and measure.