Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 列表在更新时覆盖每个条目_C#_List - Fatal编程技术网

C# 列表在更新时覆盖每个条目

C# 列表在更新时覆盖每个条目,c#,list,C#,List,我有一个静态的BoxPair类型的公共列表,我正试图向其中写入内容,但每次我向其中添加新条目时,它都会更改。我希望有人能看到这里出了什么问题,因为这让我有点疯狂。完整的添加代码如下所示: public static List<BoxPair> CreateBoxPair (int iBoxCount) { SetTopBox primary; SetTopBox backup; for (int i = 0; i < iBoxCount; i++)

我有一个静态的BoxPair类型的公共列表,我正试图向其中写入内容,但每次我向其中添加新条目时,它都会更改。我希望有人能看到这里出了什么问题,因为这让我有点疯狂。完整的添加代码如下所示:

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);