![](/img/trans.png)
[英]How to create single dimensional, two dimensional,three dimensional as well as multi dimensional array using C#?
[英]three dimensional array in c#
我正在將舊的VC ++代碼轉換為C#。 在C ++程序中,我有一個三維數組,在運行時指定了三維數組,
int * init_ltr [26][28];
int init_ltr_size = x; // gets assigned to something
// array allocated and initialized
for (i=0; i < 26; i++)
for (j=0; j < 28; j++)
init_ltr[i][j] = new int [init_ltr_size];
然后,我可以稍后引用以下項目:
init_ltr[firstchar-'a'][secchar-'a'][ix] = wordnum;
如何在C#中執行此操作? 我嘗試將其聲明為int [] init_ltr [26][28]
但編譯器不喜歡這樣。 如果可能的話,我想保留一個三維數組(而不是使用列表或其他東西),這樣我就不必去修改大量的代碼。
在c#中,您有兩個選擇,鋸齒狀數組和多維數組。 多維數組傾向於具有更好的語法,請參見下文:
鋸齒狀陣列:
int[][][] init_ltr = new int[26][][];
int init_ltr_size = x;
// array allocated and initialized
for (i=0; i < 26; i++)
init_ltr[i] = new int[28][];
for (j=0; j < 28; j++)
init_ltr[i][j] = new int[init_ltr_size];
init_ltr[0][0][0] = 0;
多維數組:
int[,,] init_ltr = new int[26, 28, x];
init_ltr[0,0,0] = 0;
C#
var size1 = 26;
var size2 = 28;
var initLtr = new int[size1][][];
var initLtrSize = 33; // gets assigned to something
for (var i = 0; i < size1; i++)
{
initLtr[i] = new int[size2][];
for (var j = 0; j < size2; j++)
initLtr[i][j] = new int[initLtrSize]; //it could even be different sizes in each array e.g: new int[i + j]
}
initLtr[0][0][0] = 3;
只是問題或初始化鋸齒狀數組中的每個數組。
DesertFox發布的解決方案的替代方案。 由於前兩個維度是硬編碼的,因此您可以使用2D數組,並使用鋸齒狀數組作為第三個維度。 我以[3,5]為例。 您可以將其更改為[26,28]。
int[,][] init_ltr = new int[3, 5][]; // init_ltr [26, 28][]
int init_ltr_size = 2; // Assign some value
for (var i = 0; i <= init_ltr.GetUpperBound(0); i++)
for (var j = 0; j <= init_ltr.GetUpperBound(1); j++)
{
init_ltr[i, j] = new int[init_ltr_size];
for (var k = 0; k < init_ltr[i, j].Length; k++)
init_ltr[i, j][k] = (i + 1) * (j + 1) * (k + 1); // Assign some value
}
// Print values of arrays. Use int_ltr[i, j][k]
for (var i = 0; i <= init_ltr.GetUpperBound(0); i++)
for (var j = 0; j <= init_ltr.GetUpperBound(1); j++)
for (var k = 0; k < init_ltr[i, j].Length ; k++)
Console.WriteLine(init_ltr[i, j][k]);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.