您的位置:首页 > 编程语言 > C#

C#基础学习笔记--数据类型,值类型,结构类型,枚举类型

2016-07-13 09:12 696 查看

1.C#语音的数据类型分为三种:值类型、引用类型、指针类型。指针类型进应用于安全代码中。

值类型:值类型变量存储的是数据类型所代表的实际数据,值类型变量的值(或对象)存储在栈(Stack)中,赋值语句是传递变量的值。

引用类型:引用类型(类就是一个引用类型)的实例也叫对象,不存在栈(Stack)中,存储在可管理堆(Managed Heap)中,堆实际上计算机系统中的空闲内存。引用类型变量的值存储在栈(Stack)中,但存储的不是引用类型对象,存储的是引用类型对象的引用,即 地址,它和指针所表示的地址不一样,引用所代表的地址不能被修改,也不能转换成其他类型地址。它是引用型变量,只能引用指定类对象,引用类型变量赋值语句是传递对象的地址。见下例:

using System;

class MyClass//类为引用类型

{ public int a=0;

}

class Test

{ static void Main()

{ f1();

}

static public void f1()

{ int v1=1;  //值类型变量v1,其值1 存储在栈(Stack)中

int v2=v1;  //将v1 的值(为1)传递给v2,v2=1,v1 值不变。

v2=2;      //v2=2,v1 值不变。

MyClass r1=new MyClass(); //引用变量r1 存储MyClass 类对象的地址

MyClass r2=r1;    //r1 和r2 都代表是同一个MyClass 类对象

r2.a=2;    //和语句r1.a=2 等价

}

}

存储在栈中的变量,当其生命周期结束,自动被撤销,例如,v1 存储在栈中,v1 和函数f1 同生命周期,退出函数f1,v1 不存在了。但在堆中的对象不能自动被撤销。。因此C和C++语言,在堆中建立的对象,不使用时必须用语句释放对象占用的存储空间。.NET 系统CLR 内建垃圾收集器,当对象的引用变量被撤销,表示对象的生命周期结束,垃圾收集器负责收回不被使用的对象占用的存储空间。例如,上例中引用变量r1
及r2 是MyClass类对象的引用,存储在栈中,退出函数f1,r1 和r2 都不存在了,在堆中的MyClass 类对象也就被垃圾收集器撤销。也就是说,CLR 具有自动内存管理功能。

2.C#值类型变量的分类
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c#