您现在的位置: > 首页 > 程序开发 > C语言教程
>> 最新教程
>> 热门教程
>> 最新游戏资讯
>> 热门游戏资讯
漫谈Visual C#的组件设计方法
作者:本站                来自:安迪教程网                 加入时间:08-06-13                进入论坛讨论

  Properties

  在C#中为类预定义属性是件再简单不过的事,见程序1。

  程序1

using System;
namespace PropertiesDemo
{
 public class MyData
 {
  ...............
 }
 public class Class1
 {
  private MyData _data;
  public MyData Data
  {
   get { return _data; }
  }
  public Class1()
  {
   _data = new MyData();
  }
 }
}

  这是相当常见的属性预定义方式,同时也是个可正常运行的程序,不过其中隐含着一个设计上的问题,那就是创建MyData对象的时机。按照程序2-1的手法,当Class1对象被创建之初,其内的_data对象也随着被创建起来,这造成了Class1对象于创建初期就付出了一个MyData对象的内存成本,这对简单的类来说或如牛毛,但倘若Class1对象中拥有一群这类属性呢?为了解决这类问题,.NET Framework中大量使用Lazy-Allocate(缓分配)技术,见程序2。

  程序2 Lazy-Allocate范例

public class Class1
{
 private MyData _data;
 public MyData Data
 {
  get
  {
   if(_data == null)
    data = new MyData();
   return _data;
  }
 }
 public Class1() { }
}

  Lazy-Allocate的设计概念很简单,就是未使用前不预付成本。相对于程序2-1所使用的Pre-Allocate(预分配)概念,程序2-2采取以时间换取空间的策略,付出存取判断式的代价来减轻空间浪费的情况。当然,Pre-Allocate也不是一无是处,不须预判断的快速存取特色适用于用户必然会存取的属性,但在一些特定的属性上,例如ASP.NET中常见的Style属性就不适合使用Pre-Allocate技巧,因为用户不一定会使用该属性,于此情况下,Lazy-Allocate模式说可以让对象省下一些内存成本。

<<< << < 1 2 3 4 > >> >>>
联系方式:QQ:6084884 email:agwcn@126.com 粤ICP备05055782号
本网站中发布的文章只代表发表人的个人观点,不代表安迪教程网网站的立场
copyright© 2000-2004 安迪教程网 All rights reserved agwcn.com