-1

我不确定发生了什么。

docsRelacionadosModel是具有这种结构的模型:

docsRelacionadosModel.idDocTipo那是一个整数

并具有这些元素:[0]:76 , [1]:76, [2]:74

在这段代码中:

int i = 0;
foreach (var m in docsRelacionadosModel)
{
    resultadoDialogModel dialogTemp = new resultadoDialogModel();
    if (i == 0) //FIRST TIME
    {
        idTipoSendoVerificado = m.idDocTipo; //HERE GETS '46'

    }
    else
    {
        // Here, first time is equal ([0]46 == [1]46)
        if (m.idDocTipo == idTipoSendoVerificado)
        {   
            //if there where no more element, but do not get here
            if (i == (docsRelacionadosModel.Count() - 1))
            {
                dialogTemp.tipo = m.idDocTipo;
                dialog.Add(dialogTemp);
            } 
        } 
        else //For the third and also the last time [1]46 != [2]44
        {
            dialogTemp.tipo = idTipoSendoVerificado; //Should be 46
            dialog.Add(dialogTemp); //Save tempModel in model
            idTipoSendoVerificado = m.idDocTipo; //Update id been verified

            if (i == (docsRelacionadosModel.Count() - 1)) // And it is the last index
            {
               dialogTemp.tipo = idTipoSendoVerificado; //Here should be 44
               dialog.Add(dialogTemp); //Save tempModel in model
            }
        }  
        i++;
    }
}

现在当我打印dialog.tipo我应该得到的值[0]:46 / [1]:44 但我得到[0]:44 / [1]:44

我不确定这是否是因为该值作为参考传递,所以当我更改idTipoSendoVerificado第三次迭代时,它会更改模型中已保存的值。

如果它令人困惑,请告诉我,我会尝试修复以获得更好的理解。

4

3 回答 3

2

您的 i++ 在外部“else”内,您可能希望它低 1 行,仅在 foreach 内。

您现在将所有项目视为“第一次”。相关线路:

int i = 0;
foreach (var m in docsRelacionadosModel)
{     
    if (i == 0) //FIRST TIME
    {
       ...
    }
    else
    {
        ...
        i++;
    }
}

i永远都是0

于 2013-02-13T17:56:21.223 回答
1

我认为问题是dialogTemp这是一个对象的引用,当你制作时dialog.Add(dialogTemp);(我猜是因为我不知道类型或对话框)你只是引用了这个对象并且你没有制作一个新的对象,你改变了 iddialogTemp.tipo = idTipoSendoVerificado;并再次添加对象,dialog.Add(dialogTemp);现在您在 [0] 和 [1] 中引用了相同的对象,是同一个对象,因为不是值传递是引用传递,所以,如果您更改对象,则更改对象他所有的参考资料。

你可以创建一个对象的新实例来解决这个问题,你需要创建一个新的 dialogTemp()...

于 2013-02-13T17:57:08.290 回答
1

只需添加var dialogTemp2 = new resultadoDialogModel();,设置dialogTemp2.tipo = idTipoSendoVerificado;然后添加新元素dialog

if (i == (docsRelacionadosModel.Count() - 1)) // And it is the last index
{
    var dialogTemp2 = new resultadoDialogModel();
    dialogTemp2.tipo = idTipoSendoVerificado; //Here should be 44
    dialog.Add(dialogTemp2); //Save tempModel in model
}
于 2013-02-13T18:00:24.700 回答