簡體   English   中英

C#:傳遞通用數組

[英]C#: Passing generic arrays

我正在嘗試編寫一種方法來檢查給定的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);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM