对于C#中b=a的N种情况分析
2010-09-30 21:00:39 来源:WEB开发网核心提示:本文旨在验证一个容易混淆的概念,从而为《玩转WPF/Silverlight中INotifyPropertyChanged和ObservableCollection》做铺垫,对于C#中b=a的N种情况分析,两个相同类型的变量a和b,并且有如下关系:b=a;如果a发生改变,所以不管是值类型double、int还是引用类型s
本文旨在验证一个容易混淆的概念,从而为《玩转WPF/Silverlight中INotifyPropertyChanged和ObservableCollection》做铺垫。
两个相同类型的变量a和b,并且有如下关系:
b = a;
如果a发生改变,b是否也发生改变呢?
情况很复杂,分以下几种情况谈论:
1) 单个实体
1. 简单类型
先考察int:
int a = 1;
int b = a;
a = 2;
Console.WriteLine("b: " + b);
输出结果:
再考察一下string:
string a = "1";
string b = a;
a = "2";
Console.WriteLine("b: " + b);
输出结果:
如果不放心,还可以测试一下Enum,结果类似,详见Demo。
结论:简单类型是组成复合类型的最基本单位,是原子,不可再拆分,所以不管是值类型double、int还是引用类型string,b都不随a的改变而改变,因为它们指向全局堆栈(对于string而言是托管堆)上的同一个地址。
[]
赞助商链接