[英]Jagged Multidimensional Arrays in C#
注意:我將“ jmArray[][,]
多維”定義為jmArray[][,]
。
我試圖圍繞這種類型的數組使用我的頭,以保持簡單的坐標,一對整數。 該數組將用於創建3x3網格,因此在我的腦海中,我看到:
jmArray[N][X,Y]
其中N是網格切片的編號,X,Y是切片的坐標。 所以:
jmArray[2][3,2]
意味着切片2位於坐標3,2處。
我一直在嘗試為每個切片分配值,但是我被卡在某處...
jmArray[0][,] = new int[1,2] {{3,3}};
有點幫助,了解如何正確執行此操作會很好。
您可以這樣實現:
int[][,] jmArray = new int[3][,];
jmArray[0] = new int[1,2] {{3,3}};
除非我對您有誤解,否則更簡單的方法是創建一個大小為3元組的字典。
var space = Dictionary<Tuple<int, int, int>, TPointValue>;
// Fill up space with some points
space[Tuple.Create(3,3,1)] = new TPointValue(42);
// Retrieve point from 3d space
TPointValue point3_3_1 = space[Tuple.Create(3,3,1)];
我要承認的是,盡管這種方法確實使點的分配和檢索非常有效,但是與鋸齒狀陣列相比,這種方法使檢索平面或基准線麻煩且效率低下。
但是 :如果將這種數據結構包裝在自己的類中,該類提供用於訪問平面/線等的方法,則可以非常輕松有效地計算出事先獲取任何點集所需的鍵。 平面/線/多邊形內的那些,然后非常有效地訪問這些點。
PS:請注意,一點上的值不必像TPointValue
這樣的奇特類型,它可以只是string
, float
或任何您喜歡的值。
代替復雜的數組,使用具有有意義名稱的簡單類可能會更好:
class Slice
{
int X = 0;
int Y = 0;
public Slice()
{
}
public Slice(int _X, int _Y)
{
X = _X;
Y = _Y;
}
}
Slice[] Slices = new Slice[9];
數組的索引將是切片的位置。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.