2012-04-17 50 views
4

我需要创建一个多维防护列表三个值,X,Y和Z,我需要一个列表,因为一旦查询值,数组必须被删除。多维列表C#

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

回答

4

如果你需要创建一个多维列表中,你总是可以创建一个列表的列表,像这样:

var multiDimensionalList = new List<List<string>>{ 
    new List<string>{"A","B","C"}, 
    new List<string>{"D","E","F"}, 
    new List<string>{"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 

要知道,虽然试图更换不通过转让方式存在的价值会抛出一个异常:

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

你的问题很难理解,但是你可能用数组的数组来完成你正在寻找的东西吗?无论如何,这就是多维数组如何在某些语言中实现的。

就你而言,你可能正在使用列表的列表:列表>。这将满足您的要求,通过删除外部列表中的第一个元素来删除“所有其他三个”对象。

+0

以防万一它是一个数组的数组,如列表但更容易删除喜欢使用索引列表 – 2012-04-17 02:15:05

+0

这是一个问题或评论?无论哪种方式,我不明白... – 2012-04-17 02:16:15

0

我很抱歉,但您的问题有点难以理解,但我会采取一定的措施。请不要将数组和列表换成单词,因为它们在C#中有所不同但相关的想法。我相信你的意思是使用[]方括号的Array。尽管您可能想要考虑使用列表,因为它们有一个很好的方式可以使用该元素从列表中删除某些元素。 MSDN有一些很好的信息来告诉你如何继续。 List(T).Remove method

该列表将自我重构以根据需要移除或添加元素。

0

我不知道我和你同时使用字符串和整数作为你的第二个索引,并引用X两次,但不是Z按照你的逻辑。假设这些是错别字,我会猜测你想要什么。

你有没有考虑一个自定义类型与XY,和Z属性,索引器来给你描述的行为:

你也没有提到你的价值观是什么类型的,所以我用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<MyType> list = new List<MyType>(); 
list = PopulateList(); // fill list with values 


var x = list[0][0]; 
var y = list[0][1]; 
var z = list[0][2]; 

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