我需要创建一个多维守卫 List 三个值,X、Y 和 Z,而我需要一个 List 是因为一旦查询到该值,就必须删除该数组。
查询看起来像这样:List [0] [0] = X, List [0] [a] = Y and List [0] [2] = X,这样我就可以只删除索引 0 而他已经删除所有其他三个。
我需要创建一个多维守卫 List 三个值,X、Y 和 Z,而我需要一个 List 是因为一旦查询到该值,就必须删除该数组。
查询看起来像这样:List [0] [0] = X, List [0] [a] = Y and List [0] [2] = X,这样我就可以只删除索引 0 而他已经删除所有其他三个。
如果您需要创建一个多维列表,您可以随时创建一个列表列表,如下所示:
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
您的问题很难理解,但也许您正在寻找的可以通过数组数组来完成?无论如何,这就是在某些语言中实现多维数组的方式。
在您的情况下,您可能正在使用列表列表:List>。这将满足您通过删除外部 List<> 对象中的第一个元素来删除“所有其他三个”的要求。
很抱歉,您的问题有点难以理解,但我会尝试一下。请不要互换 Array 和 List 这两个词,因为它们在 C# 中是不同但相关的概念。我相信您的意思是使用 [] 括号的数组。尽管您可能需要考虑使用列表,因为它们有一种很好的方法可以通过使用元素从列表中删除某些元素。MSDN 有一些关于如何进行的很好的信息。 List(T).Remove 方法
该列表将自行重组以根据需要删除或添加元素。
我不确定我是否遵循您的逻辑,因为您同时使用字符串和整数作为第二个索引器,并且引用X
了两次,但不是Z
. 假设这些是拼写错误,我将猜测您想要什么。
您是否考虑过具有X
、Y
、 ANDZ
属性的自定义类型和索引器来为您提供所描述的行为:
您也没有提及您的值是什么类型,所以我正在使用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 个元素组成。如果它不一致,那么其他答案之一将满足您的需求。