值类型和引用类型这东西怎么解释比较好呢?
先上程序:
1
2
3
4
5
6
7
8
9
10
11
12
13 |
class
Program { static
void Main( string [] args) { int
x = 0; int
y = x; //取x的值赋予y,存于栈中,一级缓存 x = 10; Console.Write( "x={0};" , x); Console.Write( "\n" ); Console.Write( "y={0};" , y); Console.ReadLine(); } } |
运行结果想必都知道了
class Program { static void Main(string[] args) { yingyong(); } private static void yingyong() { A a1 = new A(); A a2 = a1;//引用了a1的内存地址 a1.yinyongzhi = 1; Console.Write("a1={0};", a1.yinyongzhi ); Console.Write("\n"); Console.Write("a2={0};", a2.yinyongzhi ); Console.ReadLine(); } } public class A { public int yinyongzhi; public A() { yinyongzhi =111; } }
来猜猜输出答案是什么,是不是有像笔试题一样,引用类型其实和c里的指针一样,指向分配的缓存地址,只取地址上的东西,所以呢a1,a2的值应该是一样的,而不是a1等于1,a2等于111,因为a2引用了a1地址上的值。
很简单吧,下次看到别人的程序时,若是有看到赋值的地方出现和自己预想的不一样的地方,留意一下,也许就是这问题了。
原文:http://www.cnblogs.com/ouzining/p/3552407.html