zoukankan      html  css  js  c++  java
  • C#内存工作原理

    今天在工作中碰到一个很奇怪的问题

    问题代码如果下

    View Code
    1 List<ReportColumnEntity> reportColumnList = new List<ReportColumnEntity>();
    2 ReportColumnEntity column = new ReportColumnEntity();
    3
    4 foreach (ReportModel fields in )
    5 {
    6 column.Field = fields.ItemValue;
    7 column.Type = (int)DataType.TypeOfstring;
    8 column.Title = fields.ItemText;
    9 reportColumnList.Add(column);
    10 }

    以上代码希望将reportFields中的每个元素都增加到reportColumnList 但是没有达到想要的结果

    结果:reportColumnList 所有的元素都是reportFields中的最后一个

    分析 :ReportColumnEntity column = new ReportColumnEntity();
    在foreach外面,所以开辟了个内存空间

    在foreach内对column的操作时,都是对这一块内存进行操作

    在使用reportColumnList.Add(column);时,只是使用了对column的引用,所以就会出现以上的现象

    因此解决办法就是把代码修改成如下:

    List<ReportColumnEntity> reportColumnList = new List<ReportColumnEntity>();

    foreach (ReportModel fields in reportFields)
    {
    ReportColumnEntity column
    = new ReportColumnEntity();
    column.Field
    = fields.ItemValue;
    column.Type
    = (int)DataType.TypeOfstring;
    column.Title
    = fields.ItemText;
    //sqlParams.Add<Decimal?>("@" + item.ItemName, item.ItemControlValue.AsDecimal(0)).SqlDbType = SqlDbType.Decimal;

    reportColumnList.Add(column);
    }
  • 相关阅读:
    五月八日冲刺
    五月七号冲刺
    五月六日站立会议
    prufer序列学习笔记
    批量数据导入优化
    索引失效
    慢查询定位与分析
    redis主从同步
    redis RBD机制
    redis AOF机制
  • 原文地址:https://www.cnblogs.com/wangjingblogs/p/2100872.html
Copyright © 2011-2022 走看看