引用类型和值类型

                          数据类型

数据类型

 

C#中有二种类型:引用类型和值类型;

值类型:在中分配空间,由系统自动分配;

引用类型:在中分配空间,由"new"(也就是程序员自身)来分配空间,指向同一内存空间;

     引用类型赋值以后,他们共用同一内存空间,互相影响,一个值改变,另外一个的值也会改变;

1.1 值类型:  主要有数据类型,结构体,枚举;(string类型为特殊的引用类型)

// 值类型

int a1=1,b1=2;

int c1=a1,d1=b1;

int temp=c1;

c1=d1;

d1=temp;

Console.WriteLine("c1的值为{0},d1的值为{1}",c1,d1);

得到c1=2,d1=1;

 

1.2值类型是密封的(默认sealed),所以无法继承;

public static void Main(string[] args){

//  值类型,由系统在栈中自动分配空间

int a;  

intb=1;

//  引用类型,需要使用new关键字去堆中分配空间;

int[] myArray=new int[10];

Hero hero=new Hero();  // 引用类

}

1.3 值类型变量赋值又称为拷贝赋值

二      引用类型

    引用类型: 包含Object, 数组, 类, 接口,委托,string(特殊的);

       可以派生出新的类型;

  引用类型变量的赋值只赋值对对象的引用,而不复制对象本身;

 

//  引用类型

例如:   int[] a=new int[1]

           int[] b=new int[1];

           a[0]=3;

           a=b;

           b[0]=33;

           Console.WriteLine("a的值为{0},b的值为{1}",a[0],b[0]);

运行得到 a[0]=33, b[0]=33;

例如:  int a=new int();

 恒等于: int a=0;  //  默认构造函数将0赋值给了a;

使用new运算符的时候,将调用特定类型的默认构造函数并对变量赋默认值;

 

三   值类型和引用类型的区别

1.在C#中,值类型的变量直接存储数组,而引用类型的变量是对数据的引用

2.引用类型和值类型相同的是,结构体可以实现接口;

3.引用类型能派生出新的类型,而值类型不能;

4.引用类型可以包含null值,值类型不能(可以将null赋值给值类型,如 int? a =null;)(因为值类型都是密封的 sealed);

5.值类型的变量赋值是直接copy, 而引用类型是只复制对对象的引用;

6.值类型不支持多态,引用类型支持多态

 

转载于:https://www.cnblogs.com/fengjiulin110120/p/6627515.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值