2012-04-17 46 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個元素組成。如果它不一致,那麼其他答案之一就會滿足您的需求。