黑马程序员技术交流社区

标题: 关于引用赋值 [打印本页]

作者: 李紫仪    时间: 2012-2-25 23:33
标题: 关于引用赋值
哪些类型是引用赋值,怎么写段代码证明
作者: 陆亚    时间: 2012-2-25 23:42
引用是相对于值类型,值类型除了基本数据类型,还有struct,枚举,  其他的类等都是引用类型。
作者: 邱国    时间: 2012-2-25 23:58
本帖最后由 邱国 于 2012-2-26 00:19 编辑

举个例子:首先声明一个类
  1. namespace ConsoleApplication1
  2. {
  3.     class Program
  4.     {
  5.         static void Main(string[] args)
  6.         {
  7.             A a = new A();
  8.            Console.WriteLine( a.add());    //此时输出应为1
  9.             
  10.             A b = a;    //b指向a的一个引用,这就是引用赋值。
  11.             Console.WriteLine( b.add());  //此时输出为2;
  12.             Console.WriteLine( a.add());//输出为3;
  13.         }
  14.     }
  15.      class A{
  16.                private int i=0;
  17.                public int add()
  18.                {
  19.                          return  i = i+1;
  20.    
  21.                }
  22. }
复制代码
引用赋值就是同时指向一份数据,在内存中占同一份地方,
值类型的赋值是复制一份内存,占内存2个不同地方。。
对象的赋值是引用赋值,字符很特别,也是引用赋值,一般数据类型int 之类的,是值类型赋值
作者: 李紫仪    时间: 2012-2-26 00:00
陆亚 发表于 2012-2-25 23:42
引用是相对于值类型,值类型除了基本数据类型,还有struct,枚举,  其他的类等都是引用类型。 ...

效果是一样的把,string类型一旦声明就改变不了了
作者: 安超    时间: 2012-2-26 09:10
  1. int a=10;
  2. int b=a;
  3. a=20;
  4. Console.WriteLine(b);
复制代码
此时b的值仍为10,但a的值已变成20!
若a和b均为引用类型的话,a和b的值就都变成20了!
string类型,一旦修改则是先copy一份然后对这个copy进行修改操作,原来的仍不变




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2