所以我需要存储如下所示的数据:
map[x,y] = z;
map[1,3] = 5;
map[2,6] = 8;
问题是x和y的长度未知。我假设我需要像List或Dictionary这样的东西,但我不确定哪一个或如何实现它(从中添加和获取值)。
答案 0 :(得分:3)
宣布和初始化2D列表:
List<List<int>> list2D = new List<List<int>>();
添加到第一个维度(整数列表):
list2D.Add(new List<int>());
添加到列表的第二维(第一维的索引和你添加的整数值):
list2D[0].Add(123);
以下是List
对象上的MSDN文章:
https://msdn.microsoft.com/en-us/library/6sh2ey19(v=vs.110).aspx
答案 1 :(得分:2)
public object this [int x,int y] {get;组; }
对我而言,这是在C#6或更高版本中使用的最简单选项,因为一旦创建了类,我就不必初始化或创建子集合。
class Program
{
static void Main(string[] args)
{
var array = new Matrix();
array[1,0] = "cat";
array[0,1]="dog";
Console.WriteLine(array[0, 1]);
array[0, 1] = null;
}
}
class Matrix
{
private Dictionary<string,Object> Data = new Dictionary<string,object>();
public object this[int x, int y]
{
get
{
string key = this.GetKey(x, y);
return Data.ContainsKey(key) ? Data[key] : null;
}
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 });
}
}