| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1318 人关注过本帖
标题:对象的赋值方法对比
只看楼主 加入收藏
czg123698741
Rank: 2
等 级:论坛游民
帖 子:348
专家分:84
注 册:2009-3-4
结帖率:78.99%
收藏
已结贴  问题点数:5 回复次数:8 
对象的赋值方法对比
    class MyClass
    {
        private string str = "";

        public string Str
        {
            get { return str; }
            set { str = value; }
        }

    }

    class Program
    {
        static void Main(string[] args)
        {
            MyClass myClass1 = new MyClass();
            myClass1.Str = "我是myClass1,第一个对象!";
            //第一种复制
            MyClass myClass2 = myClass1;

            //第二种复制
            MyClass myClass2 = new MyClass();
            myClass2 = myClass1;
            myClass2.Str = "我是myClass2,第二个对象!";
        }
    }


【请问一下,以上这两个复制对象的方法有什么区别呢?O(∩_∩)O谢谢】
【按道理第二种,实例化一个新的对象已经开辟了新的空间了,这样一来,myClass1与myClass2两个对象已经是互不侵犯的啊。为什么myClass2的Str属性改变值后,使用myClass1.Str的属性也会变改变呢?】

[ 本帖最后由 czg123698741 于 2010-5-27 17:50 编辑 ]
搜索更多相关主题的帖子: 赋值 对象 
2010-05-27 17:40
封闭
Rank: 9Rank: 9Rank: 9
来 自:广东省汕头市
等 级:蜘蛛侠
威 望:1
帖 子:501
专家分:1084
注 册:2007-9-14
收藏
得分:0 
要知道,String 是引用类型。
赋值的时候是给地址,而不是给值;
而两者又同时指向一个地址,所以更改的时候值都会变。
2010-05-27 17:58
czg123698741
Rank: 2
等 级:论坛游民
帖 子:348
专家分:84
注 册:2009-3-4
收藏
得分:0 
回复 2楼 封闭
你好,那么如果是int类型呢?我试过了。还是引用地址的改变耶。还有您只是回答我的第二的问题,第一个问题呢?
他们两者的对象复制是否有所不同呢?
2010-05-27 21:32
athenalux
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:河北石家庄
等 级:小飞侠
威 望:8
帖 子:975
专家分:2514
注 册:2008-11-26
收藏
得分:0 
对像名子其实就是一个地址,两个对像赋值后,它们指点向同一地址,所以不管由哪个对像引用其成员,访问的是同一个地址。

QQ:81704464
2010-05-27 21:50
封闭
Rank: 9Rank: 9Rank: 9
来 自:广东省汕头市
等 级:蜘蛛侠
威 望:1
帖 子:501
专家分:1084
注 册:2007-9-14
收藏
得分:0 
回复 3楼 czg123698741
类型分为:引用类型和基本数据类型;
引用类型有 数组,自定义类,String类型等等。。。
基本数据类型有 int ,double 等等。

基本数据类型改变是对值的改变,因为它不存在地址的概念。

如果LZ想了解更深的话要去了解它们在内存中的分配。
2010-05-27 22:04
zhuyunshen
Rank: 6Rank: 6
等 级:侠之大者
威 望:2
帖 子:212
专家分:455
注 册:2009-11-22
收藏
得分:0 
fdsdffsd
2010-05-27 22:10
czg123698741
Rank: 2
等 级:论坛游民
帖 子:348
专家分:84
注 册:2009-3-4
收藏
得分:0 
回复 4楼 athenalux
那么 MyClass myClass2 和  MyClass myClass2 = new MyClass();他们这两者有不同吗?
2010-05-27 22:51
athenalux
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:河北石家庄
等 级:小飞侠
威 望:8
帖 子:975
专家分:2514
注 册:2008-11-26
收藏
得分:5 
区别是前面一个相当于初始化为空对像,但不管如何初始化,myClass2 = myClass1语句执行后,myclass2的地址都指向了myclass1的地址。

QQ:81704464
2010-05-28 05:21
czg123698741
Rank: 2
等 级:论坛游民
帖 子:348
专家分:84
注 册:2009-3-4
收藏
得分:0 
thanks
2010-05-28 21:11
快速回复:对象的赋值方法对比
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.048609 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved