admin 管理员组

文章数量: 1184232


2024年4月12日发(作者:缓冲合并工具)

c语言引用类型与值类型的区别详解

解析:CLR支持两种类型:值类型和引用类型。用Jeffrey Richter(《CLR via C#》

作者)的话来说,“不理解引用类型和值类型区别的程序员将会把代码引入诡异的陷阱和

诸多性能问题”。这就要求我们正确理解和使用值类型和引用类型。

值类型包括C#的基本类型(用关键字int、char、float等来声明),结构(用struct关

键字声明的类型),枚举(用enum关键字声明的类型);而引用类型包括类(用class关键字

声明的类型)和委托(用delegate关键字声明的特殊类)。

C#中的每一种类型要么是值类型,要么是引用类型。所以每个对象要么是值类型的

实例,要么是引用类型的实例。值类型的实例通常是在线程栈上分配的(静态分配),但是

在某些情形下可以存储在堆中。引用类型的对象总是在进程堆中分配(动态分配)。

(1)在C#中,变量是值还是引用仅取决于其基本数据类型。

C#的基本数据类型都与平台无关。C#的预定义类型并没有内置于语言中,而是内置

于.NET Framework中。.NET使用通用类型系统(CTS)定义可以在中间语言(IL)中使用的

预定义数据类型。C#中所有的数据类型都是对象。它们可以有方法、属性等。例如,在

C#中声明一个int变量时,声明实际上是CTS(通用类型系统)中32的一个实

例:

复制代码 代码如下:

int i;

i = 1;

string s;

s = ng();

(2)和ype。

引用类型和值类型都继承自类。不同的是,几乎所有的引用类型都

直接从继承,而值类型则继承其子类,即直接继承ype。

作为所有类型的基类,提供了一组方法,这些方法在所有类型中都能找

到。其中包含toString方法及clone等方法。ype继承

。它没有添加任何成员,但覆盖了所继承的一些方法,使其更适合于值类

型。

(3)值类型。

C#的所有值类型均隐式派生自ype:

结构体:struct(直接派生于ype)。

数值类型:整型,sbyte(的别名),short(16),


本文标签: 类型 引用 方法 代码 声明