• 定义值类型


    本文引用《CLR Via C#》  

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

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

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

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

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

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

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

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

  • 相关阅读:
    table 如何不越过父级div
    sqlite3_column_type 与 SQLITE_NULL的区别
    lua 协程的理解
    linux 信号
    linux 查看文件夹大小
    linux 僵屍进程
    软件架构的理解
    jquery正则表达式
    linux C遍历目录下文件
    linux 进程间同步互斥
  • 原文地址:https://www.cnblogs.com/hachun/p/4462370.html
Copyright © 2020-2023  润新知