[英]return multidimensional jagged array as an array in c#
我有一個多維鋸齒形的字符串數組:
string[,][] MDJA =
{
{new string[]{"a", "b"}, new string[]{"c", "d"}, new string[]{"e", "f"}},
{new string[]{"g", "h"}, new string[]{"j", "i"}, new string[]{"k", "l"}},
{new string[]{"m", "n"}, new string[]{"o", "p"}, new string[]{"q", "r"}}
}
我正在使用for循環比較數組在數組中的位置,以獲取所需的數組,但是MDJA在方法內部,我希望它返回特定的數組。 例如,我可能想返回
new string[]{"m", "n"}
通常,我會在多維數組中執行此操作:
for (byte i = 0; i < 3; i++)
{
if (var1[x] == var2[i])
{
return answers[y,i]
}
}
但是我之前並沒有使用鋸齒狀的數組,而當多維使用它們時,則很難獲得信息。
PS 4個變量是方法中的參數,var1和var2是字符串數組,x / y是整數。
感謝您的幫助。
我不太確定您的方法邏輯是什么樣子,但是關於元素訪問,它應該是很簡單的:
for (int i = 0; i < MDJA.GetLength(0); i++)
{
for (int j = 0; j < MDJA.GetLength(1); j++)
{
// Your compare logics go here
//
bool found = i == 2 && j == 0;
if (found)
{
return MDJA[i, j];
}
}
}
這將返回string[]{"m", "n"}
。
我以前做過此事,可惜我這里沒有代碼。
構建一個實用的方法,以遞歸方式調用自身,測試數組元素是否為數組本身,如果不是(則為一個值),則將其添加到List中,否則將子/子數組傳遞給遞歸方法。
提示,使用Array對象作為此方法的參數,而不是定義的int[,][]
數組,因此可以傳遞任何形式的crazy int[,][][][,,,][][,]
並且仍然可以使用。
對於您的問題,您將必須檢測到要停止從交錯數組轉換為值的級別,然后以簡化數組的形式返回那些交錯數組。
稍后我會發布我的代碼,可能會對您有所幫助。
public static int Count(Array pValues)
{
int count = 0;
foreach(object value in pValues)
{
if(value.GetType().IsArray)
{
count += Count((Array) value);
}
else
{
count ++;
}
}
return count;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.