c#:传递泛型数组

本文关键字:泛型 数组 | 更新日期: 2023-09-27 17:49:31

我试图写一个方法来检查,如果给定的x/y对是第二个数组的有效索引(例如检查myArray[x,y]是否安全)。

我希望它与任何类型的数组工作,我觉得应该是可能的,因为他们都有相同的GetUpperBounds(int d)方法,我不需要触摸他们的内容。我试过了

bool validate(<T>[,] array, int x, int y){ ... }

bool validate([,] array, int x, int y){ ... }

,但这不起作用。

我应该继续重载这个方法,即使方法体将是相同的字符字符吗?

c#:传递泛型数组

正确的语法是:

bool validate<T>(T[,] array, int x, int y)
{
}

里面的代码应该是:

bool validate<T>(T[,] array, int x, int y)
{
    return x >= array.GetLowerBound(0) && x <= array.GetUpperBound(0) &&
        y >= array.GetLowerBound(1) && y <= array.GetUpperBound(1);
}

或者忽略有下界的数组!= 0…(您可以创建第一个索引为100的数组,因此myarray[100]是第一个元素。这样做可能是为了与旧的VB兼容。它不是很常用)

bool validate<T>(T[,] array, int x, int y)
{
    return x >= 0 && x < array.GetLength(0) &&
        y >= 0 && y < array.GetLength(1);
}