c#值类型和引用类型的区别
4个回答
2022-11-07 · 百度认证:IT168官方账号,优质数码领域创作者
关注
展开全部
(1)值类型:数据存储在内存的堆栈中,从堆栈中可以快速地访问这些数据,因此,值类型表示实际的数据。
(2)引用类型:对象、数组、函数。
1、值类型:包括:sbyte、short、int、long、float、double、decimal(以上值类型有符号)byte、ushort、uint、ulong(以上值类型无符号)bool、char
2、引用类型:包括:对象类型、动态类型、字符串类型。二、具体区别:
1、值类型:byteb1=1;byteb2=b1;Console.WriteLine("{0},{1}。",b1,b2);b2=
2;Console.WriteLine("{0},{1}。",b1,b2);Console.ReadKey();解释:byteb1=1;声明b1时,在栈内开辟一个内存空间保存b1的值1。byteb2=b1;声明b2时,在栈内开辟一个内存空间保存b1赋给b2的值1。Console.WriteLine("{0},{1}。",b1,b2);输出结果为1,1。b2=2;将b2在栈中保存的值1改为
2。Console.WriteLine("{0},{1}。",b1,b2);输出结果为1,2。
2、引用类型:复制代码。
(2)引用类型:对象、数组、函数。
1、值类型:包括:sbyte、short、int、long、float、double、decimal(以上值类型有符号)byte、ushort、uint、ulong(以上值类型无符号)bool、char
2、引用类型:包括:对象类型、动态类型、字符串类型。二、具体区别:
1、值类型:byteb1=1;byteb2=b1;Console.WriteLine("{0},{1}。",b1,b2);b2=
2;Console.WriteLine("{0},{1}。",b1,b2);Console.ReadKey();解释:byteb1=1;声明b1时,在栈内开辟一个内存空间保存b1的值1。byteb2=b1;声明b2时,在栈内开辟一个内存空间保存b1赋给b2的值1。Console.WriteLine("{0},{1}。",b1,b2);输出结果为1,1。b2=2;将b2在栈中保存的值1改为
2。Console.WriteLine("{0},{1}。",b1,b2);输出结果为1,2。
2、引用类型:复制代码。
展开全部
1.值类型的数据存储在内存的栈中;引用类型的数据存储在内存的堆中,而内存单元中只存放堆中对象的地址。
2.值类型存取速度快,引用类型存取速度慢。
3.值类型表示实际数据,引用类型表示指向存储在内存堆中的数据的指针或引用
4.值类型继承自System.ValueType,引用类型继承自System.Object
5.栈的内存分配是自动释放;而堆在.NET中会有GC来释放
C#中基本数据类型是值类型,结构也是值类型。而数组、类、接口、字符串都是引用类型。
通俗点讲值类型就是现金;引用类型就是存折。
2.值类型存取速度快,引用类型存取速度慢。
3.值类型表示实际数据,引用类型表示指向存储在内存堆中的数据的指针或引用
4.值类型继承自System.ValueType,引用类型继承自System.Object
5.栈的内存分配是自动释放;而堆在.NET中会有GC来释放
C#中基本数据类型是值类型,结构也是值类型。而数组、类、接口、字符串都是引用类型。
通俗点讲值类型就是现金;引用类型就是存折。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
值类型:
单元直接存放“有效值”
如:
int a=3;
则a内存单元就放的是3
引用类型:
单元放的是另外一个对象的引用(地址)
如:
Form form1=new Form();
就是说,在内存中开辟了一个对象new Form(),form1内存单元存放的是那个对象的地址,并非对象本身
单元直接存放“有效值”
如:
int a=3;
则a内存单元就放的是3
引用类型:
单元放的是另外一个对象的引用(地址)
如:
Form form1=new Form();
就是说,在内存中开辟了一个对象new Form(),form1内存单元存放的是那个对象的地址,并非对象本身
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询