A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李紫仪 黑马帝   /  2012-2-25 23:33  /  1604 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

哪些类型是引用赋值,怎么写段代码证明

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

4 个回复

倒序浏览
引用是相对于值类型,值类型除了基本数据类型,还有struct,枚举,  其他的类等都是引用类型。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 邱国 于 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 之类的,是值类型赋值

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
陆亚 发表于 2012-2-25 23:42
引用是相对于值类型,值类型除了基本数据类型,还有struct,枚举,  其他的类等都是引用类型。 ...

效果是一样的把,string类型一旦声明就改变不了了
回复 使用道具 举报
  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进行修改操作,原来的仍不变

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马