Функция GetUpperBound () и GetLowerBound () для массива

Может кто-нибудь сказать, пожалуйста, что делает две функции? Они принимают целочисленный аргумент, который считается измерением. Но как значение этого целого числа меняет вывод?

Ниже приведен пример, который я запустил.

int[, ,] intMyArr = {{{ 7, 1, 3, 4 }, { 2, 9, 6, 5 } }, { { 7, 1, 3, 4 }, { 2, 9, 6, 5 }}};
Console.WriteLine(intMyArr.GetUpperBound(0));       // Output is 1
Console.WriteLine(intMyArr.GetUpperBound(1));       // Output is 1
Console.WriteLine(intMyArr.GetUpperBound(2));       // Output is 3

Console.WriteLine(intMyArr.GetLowerBound(0));       // Output is 0
Console.WriteLine(intMyArr.GetLowerBound(1));       // Output is 0
Console.WriteLine(intMyArr.GetLowerBound(2));       // Output is 0

Любая идея, почему GetLowerBound () всегда возвращает 0? Если это всегда возвращает 0, тогда зачем нам вызывать этот метод?