CSLA学习之数据遍历优化——静态变量使用(单例实现)

      最近在用CSLA做数据管理的功能。有个功能需要查看一个表b1,但一些字段的信息要从表b2中获取,这就需要每次获取b1的一行值就需要

遍历b2的所有集合。刚开始的时候是这样写的:
        /// <summary>
        /// 获取测点名称和类别
        /// </summary>
        /// <param name="name">测点名称</param>
        private void SetNameAndType(string name)
        {
            //设置设备名和型号
            if (name != null)
            {
                MeasurePntList meaLst=MeasurePntList.Get();
                foreach (MeasurePnt temp in meaLst)
                {
                    if (temp.Name == name)
                    {
                        _measureType = temp.MeasureType;
                        _PnId = temp.PnId;
                    }
                }
            }
这就导致每次都需要调用MeasurePntList.Get()方法来取值。效率很低,最后我改成如下:

在MeasurePntList 中定义一个静态实例,相当于只取一次,只有有变化的时候才会重新获取:
private static MeasurePntList _instance = null;
        /// <summary>
        /// 静态变量
        /// </summary>
        public static MeasurePntList Instance
        {
            get
            {
                if (_instance == null)
                    _instance = Get();
                return _instance;
            }
        }
之后把上面代码直接改为:
         /// <summary>
        /// 获取测点名称和类别
        /// </summary>
        /// <param name="name">测点名称</param>
        private void SetNameAndType(string name)
        {
            //设置设备名和型号
            if (name != null)
            {
                //调用静态变量,以免重复获取大量数据,影像数

据访问速度
                foreach (MeasurePnt temp in

MeasurePntList.Instance)
                {
                    if (temp.Name == name)
                    {
                        _measureType = temp.MeasureType;
                        _PnId = temp.PnId;
                    }
                }
            }
        }
这样就大大提高了效率……

原文地址:https://www.cnblogs.com/wylaok/p/2794805.html