| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1378 人关注过本帖
标题:c#菜鸟问题
只看楼主 加入收藏
立志成佛
Rank: 1
等 级:新手上路
威 望:2
帖 子:314
专家分:0
注 册:2006-11-1
收藏
得分:0 
以下是引用卡卡艾在2007-8-16 12:24:52的发言:
顺便问下:什么情况下能用到引用相等呢?


当2个实例的引用相等的时候,如果改变一个,那么另外一个也会改变

using System;
using System.Collections.Generic;
using System.Text;

namespace Test
{
class ReferenceEqual
{
string temp;
static void Main()
{
ReferenceEqual re = new ReferenceEqual();
re.temp = "temp";
ReferenceEqual rere = re;

Console.WriteLine(re.temp );
Console.WriteLine(rere.temp );

Console.WriteLine(re.Equals (rere));
Console.WriteLine(ReferenceEquals (re,rere));

re.temp = "temptemp";
Console.WriteLine(re.temp);
Console.WriteLine(rere.temp);

Console.WriteLine(re.Equals(rere));
Console.WriteLine(ReferenceEquals(re, rere));

rere = new ReferenceEqual();
re.temp = "temptemptemp";
Console.WriteLine(re.temp);
Console.WriteLine(rere.temp);

Console.WriteLine(re.Equals(rere));
Console.WriteLine(ReferenceEquals(re, rere));

}
}
}



输出

temp
temp
True
True
temptemp
temptemp
True
True
temptemptemp

False
False


因此我们得出结论
1:==不要乱用,也不要随便重写
2:2个引用相等的时候,改变其一也会改变另外一个
3: ==是重写了Equal()


曾经的曾经已不在
2007-08-16 13:00
立志成佛
Rank: 1
等 级:新手上路
威 望:2
帖 子:314
专家分:0
注 册:2006-11-1
收藏
得分:0 
以下是引用卡卡艾在2007-8-16 12:24:52的发言:
顺便问下:什么情况下能用到引用相等呢?

这个问题得等小chen回答


曾经的曾经已不在
2007-08-16 13:01
virusplayer
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2007-8-2
收藏
得分:0 
和internal 没有关系了
是你的比较出了问题啊
你的是引用的比较,除了值相等还要地址相等。
俩个对象的地址肯定是不相等的
所以。。。。。。。。。。。。。。
2007-08-16 16:11
ckkwing
Rank: 1
等 级:新手上路
帖 子:51
专家分:0
注 册:2007-8-14
收藏
得分:0 
以下是引用virusplayer在2007-8-16 16:11:31的发言:
和internal 没有关系了
是你的比较出了问题啊
你的是引用的比较,除了值相等还要地址相等。
俩个对象的地址肯定是不相等的
所以。。。。。。。。。。。。。。

原来和internal无关啊,是引用比较的原因,看来我的基础知识真的太不扎实了,谢谢

2007-08-17 09:47
快速回复:c#菜鸟问题
数据加载中...
 
   



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

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