也问一个简单的问题。ForEach里修改变量

jianshao810 2013-05-24 01:25:35

foreach (BaseInfoModel model in listCanImport)
{
try
{
CurBaseInfoBLL.AddForExcel(model);
CurBaseInfoBLL.Add(model);
model.ExcelImportFlag = 3;
}
catch (Exception ex)
{
model.SetImportMsg(Tyicd.Core.Interface.ImportFlag.ImportDataError, ex, null);
//model.ExcelImportFlag = 2;
//model.ExcelImportMsg = ex.Message;
continue;
}
}

SetImportMsg是这个实例类型基类实现的接口方法,按理来说应该可以更新的。他的作用跟下面两句是一样的。
我调用下面两句是可以实现。
请问原因
...全文
216 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
jianshao810 2013-05-24
  • 打赏
  • 举报
回复
恩。。 对于值类型,那么foreach中的变量是不能更改的; 而对于引用类型,引用类型本身不能被更改,但是引用所指向的空间的数据则可以被更改 我也知道是这样的。 是我自己搞错啦。 BaseInfoModel 的基类继承某个接口,但是我在BaseInfoModel也写了同样名字的属性,导致修改无效。 谢谢大家。
xiaogui340 2013-05-24
  • 打赏
  • 举报
回复
对于值类型,那么foreach中的变量是不能更改的; 而对于引用类型,引用类型本身不能被更改,但是引用所指向的空间的数据则可以被更改 check 下 SetImportMsg 是不是更改了其他
stonespace 2013-05-24
  • 打赏
  • 举报
回复
c#不允许在foreach中修改被迭代变量,

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧