zoukankan      html  css  js  c++  java
  • 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、我对类型决不会有多太性自信吗?

  • 相关阅读:
    iOS开发中常见错误总结(1)
    iOS开发——OC篇&纯代码退出键盘
    获取下拉框
    @RequestBody 注解
    form 表单提交
    数据库excel导出
    状态模式
    图书网上商城实现(一)
    MongoDB(一)—— 搭建环境和启动服务
    MySQL开发遇到的问题
  • 原文地址:https://www.cnblogs.com/tiantianle/p/4862416.html
Copyright © 2011-2022 走看看