C# 列表在更新时覆盖每个条目
我有一个静态的BoxPair类型的公共列表,我正试图向其中写入内容,但每次我向其中添加新条目时,它都会更改。我希望有人能看到这里出了什么问题,因为这让我有点疯狂。完整的添加代码如下所示:C# 列表在更新时覆盖每个条目,c#,list,C#,List,我有一个静态的BoxPair类型的公共列表,我正试图向其中写入内容,但每次我向其中添加新条目时,它都会更改。我希望有人能看到这里出了什么问题,因为这让我有点疯狂。完整的添加代码如下所示: public static List<BoxPair> CreateBoxPair (int iBoxCount) { SetTopBox primary; SetTopBox backup; for (int i = 0; i < iBoxCount; i++)
public static List<BoxPair> CreateBoxPair (int iBoxCount)
{
SetTopBox primary;
SetTopBox backup;
for (int i = 0; i < iBoxCount; i++)
{
primary = new SetTopBox();
backup = new SetTopBox();
primary.IBoxNumber = i;
primary.SDeviceName = "Box" + (i + 1).ToString("00");
primary.Role = Box.ROLE_PRIMARY;
backup.IBoxNumber = i;
backup.SDeviceName = "Box" + (i + 1).ToString("00");
backup.Role = Role.ROLE_BACKUP;
lstBoxes.Add(new BoxPair(primary, Role));
lstBoxes.Add(new BoxPair(backup, Role));
foreach (BoxPair p in lstBoxes)
{
Declarations.BOXES.Add(p);
}
}
return lstBoxes;
}
publicstaticlist-CreateBoxPair(intiboxcount)
{
机顶盒初级;
机顶盒备份;
对于(int i=0;i
我知道这将是一些基本的东西,但从我所看到的,我总是使用一个新的主/备份框,所以没有任何冲突。任何想法都将不胜感激
干杯
另外,我写的每一篇文章都会删除第一个单词,所以我必须键入两次。你知道为什么会这样吗
编辑:由于下面列出的所有方法都给出了相同的结果,我猜这是一个无法解决的问题。因此,我将回到绘图板,尝试以不同的方式处理此问题。无论如何,谢谢你的帮助,伙计们:)我想你只是错过了lstboxs var声明,
List lstboxs=new List代码>
publicstaticlist-CreateBoxPair(intiboxcount)
{
机顶盒初级;
机顶盒备份;
List lstboxs=新列表();
对于(int i=0;i
如果lstboxs是不需要在函数中的公共变量,则不要返回它:
public static Void CreateBoxPair (int iBoxCount)
{
SetTopBox primary;
SetTopBox backup;
for (int i = 0; i < iBoxCount; i++)
{
primary = new SetTopBox();
backup = new SetTopBox();
primary.IBoxNumber = i;
primary.SDeviceName = "Box" + (i + 1).ToString("00");
primary.Role = Box.ROLE_PRIMARY;
backup.IBoxNumber = i;
backup.SDeviceName = "Box" + (i + 1).ToString("00");
backup.Role = Role.ROLE_BACKUP;
lstBoxes.Add(new BoxPair(primary, Role));
lstBoxes.Add(new BoxPair(backup, Role));
foreach (BoxPair p in lstBoxes)
{
Declarations.BOXES.Add(p);
}
}
}
publicstaticvoidcreateboxpair(intiboxcount)
{
机顶盒初级;
机顶盒备份;
对于(int i=0;i
我认为您缺少了lstboxs var声明,List lstboxs=new List代码>
publicstaticlist-CreateBoxPair(intiboxcount)
{
机顶盒初级;
机顶盒备份;
List lstboxs=新列表();
对于(int i=0;i
如果lstboxs是不需要在函数中的公共变量,则不要返回它:
public static Void CreateBoxPair (int iBoxCount)
{
SetTopBox primary;
SetTopBox backup;
for (int i = 0; i < iBoxCount; i++)
{
primary = new SetTopBox();
backup = new SetTopBox();
primary.IBoxNumber = i;
primary.SDeviceName = "Box" + (i + 1).ToString("00");
primary.Role = Box.ROLE_PRIMARY;
backup.IBoxNumber = i;
backup.SDeviceName = "Box" + (i + 1).ToString("00");
backup.Role = Role.ROLE_BACKUP;
lstBoxes.Add(new BoxPair(primary, Role));
lstBoxes.Add(new BoxPair(backup, Role));
foreach (BoxPair p in lstBoxes)
{
Declarations.BOXES.Add(p);
}
}
}
publicstaticvoidcreateboxpair(intiboxcount)
{
机顶盒初级;
机顶盒备份;
对于(int i=0;i
从评论中,我对代码的最佳选择如下:
public static List<BoxPair> CreateBoxPair (int iBoxCount)
{
for (int i = 0; i < iBoxCount; i++)
{
var primary = new SetTopBox();
var backup = new SetTopBox();
primary.IBoxNumber = i;
primary.SDeviceName = "Box" + (i + 1).ToString("00");
primary.Role = Box.ROLE_PRIMARY;
backup.IBoxNumber = i;
backup.SDeviceName = "Box" + (i + 1).ToString("00");
backup.Role = Role.ROLE_BACKUP;
var primaryPair = new BoxPair(primary, Role);
var backupPair = new BoxPair(backup, Role);
lstBoxes.Add(primaryPair);
lstBoxes.Add(backupPair);
Declarations.BOXES.Add(primaryPair);
Declarations.BOXES.Add(backupPair);
}
return lstBoxes;
}
publicstaticlist-CreateBoxPair(intiboxcount)
{
对于(int i=0;ilstBoxes.Add(new BoxPair(primary, Role));
lstBoxes.Add(new BoxPair(backup, Role));
foreach (BoxPair p in lstBoxes)
{
Declarations.BOXES.Add(p);
}
var p1 = new BoxPair(primary, Role);
var p2 = new BoxPair(backup, Role);
lstBoxes.Add(p1);
lstBoxes.Add(p2);
Declarations.BOXES.Add(p1);
Declarations.BOXES.Add(p2);