多维列表C#

我需要创建一个多维保护列表三个值,X,Y和Z,我需要一个List,因为一旦查询了该值,就必须删除该数组。

查询看起来像这样:List [0] [0] = X,List [0] [a] = Y和List [0] [2] = X,这样我只能删除索引0而且他已经删除所有其他三个。

如果需要创建多维列表,可以随时创建列表列表,如下所示:

var multiDimensionalList = new List>{ new List{"A","B","C"}, new List{"D","E","F"}, new List{"G","H","I"}, }; Console.WriteLine(multiDimensionalList[2][1]); // Prints H multiDimensionalList[2].RemoveAt(1); Console.WriteLine(multiDimensionalList[2][1]); // Prints I multiDimensionalList[2][1] = "Q"; Console.WriteLine(multiDimensionalList[2][1]); // Prints Q 

请注意,尝试通过赋值替换不存在的值将引发exception:

 multiDimensionalList[2][5] = "R"; // Throws an ArgumentOutOfRangeException 

您的问题很难理解,但也许您正在寻找的可以使用一系列数组来完成? 这就是多维数组在某些语言中的实现方式。

在您的情况下,您可能正在使用List of List:List>。 这将通过删除外部List <>对象中的第一个元素来满足您删除“所有其他三个”的要求。

对不起,但你的问题有点难以理解,但我会抓住它。 请不要交换单词Array和List,因为它们是C#中不同但相关的想法。 我相信你的意思是使用[]括号的数组。 虽然您可能想要考虑使用列表,因为它们有一种很好的方法可以使用该元素从列表中删除某些元素。 MSDN有一些关于如何继续进行的良好信息。 列表(T)。删除方法

列表将自行重组以删除或添加元素。

我不确定我是否遵循你的逻辑,因为你使用字符串和整数作为第二个索引器,并引用X两次,但不是Z 假设这些是拼写错误,我会猜测你想要什么。

您是否考虑过具有XYZ属性的自定义类型,以及用于为您提供所描述的行为的索引器:

你也没有提到你的值是什么类型,所以我使用object ,但随意替换你自己的类型(或通用类型)

 public class MyType { private object[] backingArray = new object[3]; public object this[int index] { get { return backingArray[index]; } set { backingArray[index] = value; } } public object X { get { return backingArray[0]; } set { backingArray[0] = value; } } public object Y { get { return backingArray[1]; } set { backingArray[1] = value; } } public object Z { get { return backingArray[2]; } set { backingArray[2] = value; } } } 

然后你可以像这样使用它:

 List list = new List(); list = PopulateList(); // fill list with values var x = list[0][0]; var y = list[0][1]; var z = list[0][2]; 

当然,这个实现取决于你的第二个维度总是由3个元素组成。 如果它不一致,那么其他一个答案就会满足您的需求。