Hi,
ich suche eine möglichst performate Lösung für mein Problem.
Ich benötigt eine Möglichkeit, ein 2-dimensionals Array aus short-Werten zu speichern.
Dabei ist die Größe und die Start- und Endwerte der Keys nicht bekannt. (können auch negativ sein)
Genauer gesagt will ich eine 2D Tilemap speichern, die prozedual mit der Spieler-Bewegung generiert wird.
Das Ganze soll in C# (Unity) implementiert werden.
Ich hatte eine kleine Klasse gefunden, die das mit einem Dictionary macht, weis aber nicht wie performant das ist, wenn da einige tausend Werte drin gespeichert werden.
Hier die Klasse:
|
C#-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
public class Matrix2D<T>
{
private Dictionary<string, T> Data = new Dictionary<string, T>();
public T this[int x, int y]
{
get
{
string key = this.GetKey(x, y);
return Data.ContainsKey(key) ? Data[key] : default(T);
}
set
{
string key = this.GetKey(x, y);
if (value == null)
Data.Remove(key);
else
Data[key] = value;
}
}
private string GetKey(int x, int y)
{
return String.Join(",", new[] { x, y });
}
}
|
Gibt es eine bessere Lösung?
Gruß