zoukankan      html  css  js  c++  java
  • 定义值类型

    本文引用《CLR Via C#》  

      设计自己的类型时,要仔细地考虑是否将其定义成值类型,而不是引用类型。某时候,值类型能够提供更好的性能,值类型的主要优势在于它们不作为对象在托管堆上分配。

      满足以下全部条件适合将类型定义成值类型:

      1. 类型具有基元类型的行为。换言之,这是一个十分简单的类型,其中没有成员会修改类型的任何字段。若一个类型没有提供会更改其字段的成员,就说该类型是不可变类型。事实上,对于许多值类型来说,我们都建议将其所有字段都标记为readonly(只读);

      2. 类型不需要从任何类型继承;

      3. 类型也不会派生出任何类型。

      类型实例的大小也应考虑在内,因为在默认情况下,实参是以传值方式传递的,这会造成对值类型实例中的字段进行复制,从而损坏性能。同样的,被定义为返回一个值类型的一个方法在返回时,实例中的字段会复制到调用者分配的内存中,从而损坏性能。所有,要将一个类型定义成值类型,除了上述原因,还要满足以下条件:

      1. 类型的实例较小(约16字节或更小);

      2. 类型的实例较大,但不作为方法的实参,也不作为方法的返回值。

  • 相关阅读:
    淘女郎相册爬虫(Python编写)
    在 Linux 命令行中使用和执行 PHP 代码
    PHP PhantomJs中文文档(翻译)
    PHP
    PHP
    PHP
    PHP — 用PHP实现一个双向队列
    Redis — CentOS6.4安装Redis以及安装PHP客户端phpredis
    Linux
    Memcache学习笔记
  • 原文地址:https://www.cnblogs.com/hachun/p/4462370.html
Copyright © 2011-2022 走看看