3个变量的信息存储
Information Storage for 3 variables
我正在尝试创建一种在 C# 编程中存储 3 个变量的好方法,两个 ints 和一个 point。
我想了个办法,用字典数组
Dictionary<int, Point>[] ItemList = new Dictionary<int, Point>[4];
我的想法是,一个变量必须介于 1 和 4 之间,所以我会将其作为排序点或每个数组位置。第二个整数,必须介于 0 和 15 之间,并且该点位于 4x4 网格上。我认为这种方法会奏效,除了你不能在字典中使用相同的键之外,它会奏效,而且由于两个整数都会重复,所以我无法将它们换掉。这个想法也出了window,同样的问题
Dictionary<int, int>[,] ItemList = new Dictionary<int, int>[4,4];
我也想过使用元组,但我对它没有太多(任何)经验,而且我对它们的实验并不顺利。它的问题是我无法计算其中有多少物品。我是这样设置的。
Tuple<int, Point>[] ItemList = new Tuple<int, Point>[4];
和我的第一个例子一样的想法,只是没有这样的代码
ItemList[1].Count /*OR*/ ItemList[1].Length
如果我遗漏了一些非常明显的元组,请告诉我,或者建议一种不同的存储方法,将所有 3 个变量存储在一起会很好。
你可以使用Tuple
直接存储3个数据结构。 Tuple
可以有两个以上的项目,并且可以是任何类型。这样,您就不必使用数组:
Tuple<int, int, Point>
要获取值,请使用相应的 Item
属性。对于第一个整数,它将是 yourTuple.Item1
。对于第二个 yourTuple.Item2
和点 yourTuple.Item3
.
如果你有多个Tuples
,你可以使用一个经典的List
来存储它们:
var tuples = new List<Tuple<int, int, Point>>();
因为它是一个列表,你可以很容易地得到计数:tuples.Count()
所以 class
对我来说似乎是合适的结构。
public class Something {
public int Item1 { get; set; }
public int Item2 { get; set; }
public Point Location { get; set; }
}
然后将这些对象存储在 List<>
var List<Something> list = new List<Something>();
向列表添加项目...
list.Add(new Something() {Item1 = 4, Item2 = 8, Point = new Point(x,y)});
然后使用一些 LINQ 来获得您想要的。
var onlyItem1IsFour = (from item in list where 4 == item.Item1 select item).ToList();
请原谅我的 LINQ。我习惯了 VB 并且可能 casing/syntax 有点错误
嗯,使用列表的思想,我解决了我的问题。它有点混合了建议的想法和我使用数组的原始想法。如果您想做类似的事情,则不必使用数组,您可以使用具有 3 个值的元组,我只需要一个 int 值的数组,因为我需要根据那个 int 单独存储它们值为(0 到 4 之间)。这是一些可行的代码。
List<Tuple<int, Point>>[] ItemList = new List<Tuple<int, Point>>[4]; // how to declare it
for (int i = 0; i < 4; i++)
{
ItemList[i] = new List<Tuple<int, Point>>(); // initilize each list
}
ItemList[1].Add(new Tuple<int, Point>(5, new Point(1, 2))); // add a new tuple to a specific array level
int count = ItemList[1].Count; // finds the count for a specific level of the array --> (1)
int getInt = ItemList[1].ElementAt(0).Item1; // finds int value --> (5)
Point getPoint = ItemList[1].ElementAt(0).Item2; // finds the point --> (1,2)
我正在尝试创建一种在 C# 编程中存储 3 个变量的好方法,两个 ints 和一个 point。
我想了个办法,用字典数组
Dictionary<int, Point>[] ItemList = new Dictionary<int, Point>[4];
我的想法是,一个变量必须介于 1 和 4 之间,所以我会将其作为排序点或每个数组位置。第二个整数,必须介于 0 和 15 之间,并且该点位于 4x4 网格上。我认为这种方法会奏效,除了你不能在字典中使用相同的键之外,它会奏效,而且由于两个整数都会重复,所以我无法将它们换掉。这个想法也出了window,同样的问题
Dictionary<int, int>[,] ItemList = new Dictionary<int, int>[4,4];
我也想过使用元组,但我对它没有太多(任何)经验,而且我对它们的实验并不顺利。它的问题是我无法计算其中有多少物品。我是这样设置的。
Tuple<int, Point>[] ItemList = new Tuple<int, Point>[4];
和我的第一个例子一样的想法,只是没有这样的代码
ItemList[1].Count /*OR*/ ItemList[1].Length
如果我遗漏了一些非常明显的元组,请告诉我,或者建议一种不同的存储方法,将所有 3 个变量存储在一起会很好。
你可以使用Tuple
直接存储3个数据结构。 Tuple
可以有两个以上的项目,并且可以是任何类型。这样,您就不必使用数组:
Tuple<int, int, Point>
要获取值,请使用相应的 Item
属性。对于第一个整数,它将是 yourTuple.Item1
。对于第二个 yourTuple.Item2
和点 yourTuple.Item3
.
如果你有多个Tuples
,你可以使用一个经典的List
来存储它们:
var tuples = new List<Tuple<int, int, Point>>();
因为它是一个列表,你可以很容易地得到计数:tuples.Count()
所以 class
对我来说似乎是合适的结构。
public class Something {
public int Item1 { get; set; }
public int Item2 { get; set; }
public Point Location { get; set; }
}
然后将这些对象存储在 List<>
var List<Something> list = new List<Something>();
向列表添加项目...
list.Add(new Something() {Item1 = 4, Item2 = 8, Point = new Point(x,y)});
然后使用一些 LINQ 来获得您想要的。
var onlyItem1IsFour = (from item in list where 4 == item.Item1 select item).ToList();
请原谅我的 LINQ。我习惯了 VB 并且可能 casing/syntax 有点错误
嗯,使用列表的思想,我解决了我的问题。它有点混合了建议的想法和我使用数组的原始想法。如果您想做类似的事情,则不必使用数组,您可以使用具有 3 个值的元组,我只需要一个 int 值的数组,因为我需要根据那个 int 单独存储它们值为(0 到 4 之间)。这是一些可行的代码。
List<Tuple<int, Point>>[] ItemList = new List<Tuple<int, Point>>[4]; // how to declare it
for (int i = 0; i < 4; i++)
{
ItemList[i] = new List<Tuple<int, Point>>(); // initilize each list
}
ItemList[1].Add(new Tuple<int, Point>(5, new Point(1, 2))); // add a new tuple to a specific array level
int count = ItemList[1].Count; // finds the count for a specific level of the array --> (1)
int getInt = ItemList[1].ElementAt(0).Item1; // finds int value --> (5)
Point getPoint = ItemList[1].ElementAt(0).Item2; // finds the point --> (1,2)