c#相当新,有点困惑......
我有一个类检索2个值并将它们放在一个数组中,然后我希望将该数组添加到列表中。
数组充当购买项目,列表将作为购物篮。
public void Add(int Id , int Quantity )
{
int[] buying = new int[] { Id, Quantity };
//AddTo(buying);
List<int[]> arrayList = new List<int[]>();
arrayList.Add(buying);
}
我只是坚持如何在不创建列表的新实例的情况下添加到列表中,并且还没有删除已添加的任何项目?
感谢您的帮助:)
答案 0 :(得分:4)
然后你必须在其他地方拥有列表的实例,把它带到函数之外:)
List<int[]> arrayList = new List<int[]>();
public void Add(int Id , int Quantity )
{
int[] buying = new int[] { Id, Quantity };
//AddTo(buying);
arrayList.Add(buying);
}
最好使用KeyValuePair而不是int []:
List<KeyValuePair<int, int>> arrayList = new List<KeyValuePair<int, int>>();
public void Add(int Id , int Quantity )
{
KeyValuePair<int, int> buying = new KeyValuePair<int, int>(Id, Quantity);
arrayList.Add(buying);
}
或者如果您不需要特定订单,最好使用词典:
Dictionary<int, int> list = new Dictionary<int, int>();
public void Add(int Id , int Quantity )
{
list.add(Id, Quantity);
}
答案 1 :(得分:2)
所以你的问题是当函数结束时,不再可以访问arrayList。解决这个问题的一种方法是给出arrayList类的范围,另一种方法是将它发送给函数(在类或其他函数中声明)
public void Add(List<int[]> list, int Id , int Quantity )
{
int[] buying = new int[] { Id, Quantity };
list.Add(buying);
}
答案 2 :(得分:1)
在班级内定义你的名单?
List<int[]> arrayList = new List<int[]>();
public void Add(int Id , int Quantity )
{
int[] buying = new int[] { Id, Quantity };
//AddTo(buying);
arrayList.Add(buying);
}
顺便说一下,您应该考虑使用包含Id
和Quantity
属性的类。或者使用List<int[]>
而不是Dictionary<int,int>
,您可以使用密钥Id
Value
1}}和Quantity
是{{1}}。
答案 3 :(得分:0)
除了其他答案。如果您不希望列表中特定列表,则可以将列表作为参数传递给方法。
public void Add(int id, int quantity, List<int[]> container)
{
int[] buying = new int[] { id, Quantity };
container.Add(buying);
}
答案 4 :(得分:0)
两种方式
1。将列表的引用传递给此函数。
public void Add(List<int[]> arrayList, int Id , int Quantity ) { int[] buying = new int[] { Id, Quantity }; arrayList.Add(buying); }
通过这种方式,您始终可以将项目添加到现有列表中。
2. 或者,此添加功能必须是类的一部分,例如XYZ。所以创建
列出arrayList;
作为该类的成员并使用以下代码段。
类XYZ {
列出arrayList;
public XYZ(){ this.arrayList = new List(); }
public void Add(List arrayList,int Id,int Quantity){
int[] buying = new int[] { Id, Quantity }; this.arrayList.Add(buying); }
}