class A
{
private int _Val;
public int Val
{
get { return _Val; }
set { _Val = value; }
}
}
class Program
{
static void Main(string[] args)
{
A a = new A();
a.Val = 100;
A b = a;
a.Val = 200;
a = b;
Console.Write(a.Val.ToString());
}
}说说看,你认为会输出多少?为什么?
{
private int _Val;
public int Val
{
get { return _Val; }
set { _Val = value; }
}
}
class Program
{
static void Main(string[] args)
{
A a = new A();
a.Val = 100;
A b = a;
a.Val = 200;
a = b;
Console.Write(a.Val.ToString());
}
}说说看,你认为会输出多少?为什么?
{
int a=100;
int b=a;
a=200;
a=b;
Console.Write(a.ToString());
}
A a = new A();
a.Val = 100;
A b = a;
a,b引用的是同一个对象实例
楼主Console.Write(a.Val.ToString())输出是应该是200
1楼Console.Write(a.ToString())输出应该是100
2,100class A
{
private int _Val;
public int Val
{
get { return _Val; }
set { _Val = value; }
}
}
class Program
{
static void Main(string[] args)
{
A a = new A(); //定义并初始化a实例,在堆栈上分配内存
a.Val = 100;
A b = a; //线程堆栈上的b实例也指向上面的a实例,也就是指向同一个对象,同一块内存
a.Val = 200;
a = b;
Console.Write(a.Val.ToString()); //转来转去还是那个a对象,所以是200
}
}
static void Main(string[] args)
{
int a=100; //值类型的,没得说,一个就是一个
int b=a;
a=200;
a=b; //等价于 int b=100;a=b;
Console.Write(a.ToString()); 所以还是100
}就理解到这个份上了,欢迎大侠纠正错误。
准确的说应该是b实例的引用也指向a实例
2. 100
value type VS reference type
基本数据类型是值类型,保存在堆栈,一个变化不引起另一个变化;
PS:基本类型数组中的每一个元素都是值类型,但是数组对象是引用类型