• EffectiveC#6--区别值类型数据和引用类型数据


    1. 设计一个类型时,选择struct或者class是件简单的小事情,但是,一但你的类型发生了改变,

    对所有使用了该类型的用户进行更新却要付出(比设计时)多得多的工作.

    2.值类型:无多态但性能佳。

      值类型(结构)存储数据,而引用类型(类)表现行为或职责。

    3.

    public class C
     { 
    private MyType _a = new MyType( ); 
    private MyType _b = new MyType( ); 
    // Remaining implementation removed.
    
     } 
    
    C var = new C();
    

      如果MyType是值类型,那么你只做了一次堆内存分配。大小正好是MyType大小的2倍.

               MyType是引用类型,那么就做了三次堆内存分配:一次是为C对象,占4字节(假设你用的是32位的指针),另2次是为包含在C对象内的MyType对象分配堆内存

    MyType [] var = new MyType[ 100 ];

       如果MyType是一个值类型数据,一次就分配出100个MyType的空间。

      如果MyType是引用类型,就只有一次内存分配。每一个数据元素都是null。当你初始化数组里的每一个元素时,你要上演101次分配工作且这101次内存分配比1次分配占用更多的时间。分配大量的引用类型数据会使堆内存出现碎片,从而降低程序性能。如果你创建的类型意图存储数据的值,那么值类型是你要选择的。

    4.如果你对下面所有问题回答YES,你应该创建值类型数据

     1、类型的最基本的职责是存储数据吗?

    2、它的属性上有定义完整的公共接口来访问或者修改数据成员吗?

    3、我对类型决不会有子类自信吗?

    4、我对类型决不会有多太性自信吗?

  • 相关阅读:
    kafka
    yum-nginx
    expect
    ubuntu快捷方式
    10,zzlian爬取
    9-豆瓣电影
    8selenium
    7,pyquery获取数据
    6,BeautifulSoup-获取数据
    5-正则匹配获取数据
  • 原文地址:https://www.cnblogs.com/tiantianle/p/4862416.html
Copyright © 2020-2023  润新知