黑马程序员技术交流社区
标题:
关于值传递和引用传递的问题???
[打印本页]
作者:
闫常国
时间:
2013-5-1 22:17
标题:
关于值传递和引用传递的问题???
本帖最后由 闫常国 于 2013-5-2 17:28 编辑
namespace Test
{
class Program
{
static void Main(string[] args)
{
int a = 0;
object obj = a;
a = 100;
Console.WriteLine(a);//a值为100
Console.WriteLine(obj);//obj值为0
这里obj不是指向a所开辟的内存空间吗,为什么a的值改变了,而obj的值没变?
obj的值难道不是引用传递吗?
Console.ReadKey();
}
}
}
作者:
刘赛
时间:
2013-5-1 22:24
obj指向的是内存堆中的空间的值为a,int a在内存栈中。
int a=0;栈中的a为0
Object obj=a;将obj指向的堆中的内存空间赋值为a,
a=100;给栈中的a的值重新赋值100
作者:
刘赛
时间:
2013-5-1 22:26
值类型在栈中
引用类型的值存放在堆中
作者:
闫常国
时间:
2013-5-1 22:29
谁能详解一下内存中的堆和栈
作者:
↖落葉下♀媃媚
时间:
2013-5-1 23:06
一般普通对象都是引用类型,赋值的时候都是传递类型,而像int datemate bool char类型属于值类型,赋值的时候都是
传递拷贝!引用传递传的是对象的地址而不是内容!
namespace Test
{
class Program
{
static void Main(string[] args)
{
int a = 0;
object obj = a;//这里是指向a的原来的内存地址
a = 100;//开辟了另一个内存空间,所以a改变不影响obj的值
Console.WriteLine(a);//a值为100
Console.WriteLine(obj);//obj值为0
Console.ReadKey();
}
}
}
作者:
陈晖
时间:
2013-5-2 16:20
int类型a赋值给object类型obj是一个装箱的过程,
是将a的值复制了一份,之后obj与a没有任何关系。
无论怎么操作a都不影响obj的值。
:)
作者:
闫常国
时间:
2013-5-2 17:28
陈晖 发表于 2013-5-2 16:20
int类型a赋值给object类型obj是一个装箱的过程,
是将a的值复制了一份,之后obj与a没有任何关系。
无论怎么 ...
嗯 学习了 谢谢
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2