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){ ... }
,但这不起作用。
我应该继续重载这个方法,即使方法体将是相同的字符字符吗?
正确的语法是:
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);
}