当我创建一个自己创建的类并使用new运算符创建两个列表时,当我开始添加数据时,ID编号与两个列表的顺序相同。
将10件商品添加到列表1中后,当我开始将10件商品添加到列表2中时,ID号11、12、13开始给出。
我想要的每个列表都是增加ID的一种不同方式。
如果可以的话,请做好。
样品分类
public class Listem
{
private static int xid;
public int ID;
public DateTime Date;
public byte Week;
public char Process;
public string PerName;
public float Pips;
public Listem(string PerName, char LongShort, byte Hafta, float Pips)
{
xid++;
this.ID = xid;
this.PerName = PerName;
this.Process = LongShort;
this.Week = Hafta;
this.Pips = Pips;
}
public override string ToString()
{
return $"ID : {this.ID}\tPerName : {this.PerName} Tarih : {String.Format("{0:yyyy-MM-dd}", this.Date)}\tİşlem Yönü : {this.Process}\tHafta : {this.Week}\tPips : {this.Pips}";
}
}
主程序
static void Main(string[] args)
{
List<Listem> Liste_1 = new List<Listem>();
List<Listem> Liste_2 = new List<Listem>();
for (int i = 0; i < 10; i++)
{
Liste_1.Add(new Listem("Ahmet", '2', 2, 9F));
}
for (int i = 0; i < 10; i++)
{
Liste_2.Add(new Listem("Mehmet", '3', 4, 19F));
}
Console.WriteLine("Liste 1 ===============");
foreach (var item in Liste_1)
{
Console.WriteLine(item);
}
Console.WriteLine("Liste 2 ===============");
foreach (var item in Liste_2)
{
Console.WriteLine(item);
}
}
结果
答案 0 :(得分:0)
要使用现有代码并重置ID,您可以提供一种方法,以允许客户端将static
类上的xid
字段Listem
重置回{{ 1}}之前添加项目。但是,这不是一个很好的设计,因为它要求客户端知道他们必须在创建新列表之前调用此方法。
0
如果要允许用户控制public class Listem
{
private static int xid;
// [Other class code here]
public static void ResetId()
{
xid = 0;
}
}
属性,则应该将其设为该类的另一个公共属性。哦,就此而言,您没有使用属性,而是使用了公共字段,这也被认为是不好的设计。对于公共成员,请始终选择属性。
这是获得所需东西的最快方法:
ID
但是,执行此操作的更好方法是使所有公共字段属性(包括// Before populating a new list, always reset the xid field to '0'
Listem.ResetId();
for (int i = 0; i < 10; i++)
{
Liste_1.Add(new Listem("Ahmet", '2', 2, 9F));
}
// Before populating a new list, always reset the xid field to '0'
Listem.ResetId();
for (int i = 0; i < 10; i++)
{
Liste_2.Add(new Listem("Mehmet", '3', 4, 19F));
}
)都摆脱静态字段:
ID
然后,您可以在创建列表时将public class Listem
{
public int ID { get; set; }
public DateTime Date { get; set; }
public byte Week { get; set; }
public char Process { get; set; }
public string PerName { get; set; }
public float Pips { get; set; }
public Listem(int id, string perName, char longShort, byte hafta, float pips)
{
ID = id;
PerName = perName;
Process = longShort;
Week = hafta;
Pips = pips;
}
public override string ToString()
{
return $"ID : {ID}\tPerName : {PerName} Tarih : {Date:yyyy-MM-dd}" +
$"\tİşlem Yönü : {Process}\tHafta : {Week}\tPips : {Pips}";
}
}
循环迭代器用作for
:
ID
然后输出列表,它看起来像:
for (int i = 0; i < 10; i++)
{
Liste_1.Add(new Listem(i, "Ahmet", '2', 2, 9F));
}
for (int i = 0; i < 10; i++)
{
Liste_2.Add(new Listem(i, "Mehmet", '3', 4, 19F));
}