假如:private List<User> _list;
public List<User> UserList
{
     get
     {
           //假设这里有一堆代码,查询数据库,各种操作,各种处理,简称fz操作
         return _list;
     }
}这里有个方法public List<User> GetList()
{
       //其实同上面一样,假设这里有一堆代码,查询数据库,各种操作,各种处理,简称fz操作
        return ......;
}问题是:如果我在使用UserList的时候,如UserList[0]....,UserList[1].....,每次使用UserList都会执行一遍fz操作。
但是如果使用方法的话List<User> list=GetList(); 这样以后使用list, fz操作就执行了一次。
访问器有没有办法也只让fz操作只执行一次?我是真的糊涂了。

解决方案 »

  1.   

    你的理解是对的,的确UserList[0]....,UserList[1].....,每次使用UserList都会执行一遍fz操作。如果是你自己的类的内部使用,那么你应该是用_list这个私有变量而不是UserList。如果你这个属性很平凡的被使用,那么你的代码应该进行优化,把结果存起来而不是每次都去重新取。
      

  2.   

    属性定义
    public List<User> UserList
    {
         get
         {
               //假设这里有一堆代码,查询数据库,各种操作,各种处理,简称fz操作
             return _list;
         }
    }
    把“//假设这里有一堆代码,查询数据库,各种操作,各种处理,简称fz操作”去掉,这些操作你可以放到构造函数中
      

  3.   

    属性中的get,set一般都只是:
    eg:
    public Int32 N
    {
      set
      {
        n = value;
      }
      get
      {
        return value;
      }
    }
    没有你那么多fz等操作。