Смотря что значит "наличие элемента в массиве". Если массив статический, то элемент там всегда наличествует. А если динамический, то в D можно проверить что такие индексы существуют, вот так например:
auto array = new int[10][20];
/* ... */
writeln(array.length); // напишет 20
writeln(array[0].length); // напишет 10
// проверим, что есть элемент [3][4]
if ((array.length < 4) || (array[0].length < 3))
writeln("fail"); // а вот это не напишет, значит элемент [3][4] доступен.
Ещё можно явно отлавливать исключение, когда читается несуществующий элемент:
auto array = new int[10][20];
/* ... */
bool isElementExist(int[10][] a, size_t indexA, size_t indexB)
{
try { auto i = a[indexA][indexB]; }
catch { return false; }
return true;
}
/* ... */
writeln(isElementExist(array, 300, 4)); // false
writeln(isElementExist(array, 3, 4)); // true