龙空技术网

C#值类型与引用类型介绍

程序员VenusKong 108

前言:

当前你们对“netdecimal声明”可能比较注重,姐妹们都想要分析一些“netdecimal声明”的相关资讯。那么小编同时在网摘上搜集了一些对于“netdecimal声明””的相关内容,希望小伙伴们能喜欢,同学们快快来了解一下吧!

值类型:

如果数据类型在它自己的内存分配中存储数据,则该数据类型就是“值类型”。 值类型包括:

所有数字数据类型

Boolean 、Char 和 Date

所有结构,即使其成员是引用类型

枚举,因为其基础类型总是 SByte、Short、Integer、Long、Byte、UShort、UInteger 或 ULong

每个结构是值类型,因此,即使它包含引用类型成员。 因此,值类型 (如 Char 和 Integer 由 .NET framework 结构实现。

可以通过使用保留关键字(例如 Decimal)声明值类型。 也可以使用 New 关键字初始化值类型。 这对于值类型有一个带参数的构造函数的情况尤为有用。此示例有 Decimal(Int32, Int32, Int32, Boolean, Byte) 构造函数,它从提供的部分生成新的 Decimal 值。

引用类型:

“引用类型”包含指向存储数据的其他内存位置的指针。 引用类型包括:

String

所有数组,即使其元素是值类型

类类型,如 Form

委托

类是一种“引用类型”。 因此,诸如 Object 和 String 之类的引用类型都受 .NET Framework 类支持。 请注意,每个数组都是一种引用类型,即使其成员是值类型。

值类型的变量保存到内存的线程的堆栈中;而引用类型的变量会保存到托管堆中,其中这里说的托管堆又可以分为GC堆、LOH堆。其中GC堆、LOH堆是根据创建的对象的大小来分配到不同的堆中的,判断的平衡点是这个对象是否超过85000字节,如果小于85000字节,则系统把对象保存到GC堆中;如果大于或者等于85000字节,则系统保存到LOH堆中(一般LOH创建的对象是数组)。所以我们常说的托管堆就是指GC堆和LOH堆的集合。当然,我这里写的也不是完全正确的,其实在c#中创建对象是一个非常复杂过程,当中会涉及到系统程序域、共享程序域和默认程序域等等。

标签: #netdecimal声明