社区
C#
帖子详情
问在C#中Equals与==的区别?
_西瓜皮_
2006-10-08 09:44:25
如题.
...全文
6568
30
打赏
收藏
问在C#中Equals与==的区别?
如题.
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
30 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Jacky_Sunx
2010-06-02
打赏
举报
回复
mark
Richard_Hong
2006-10-10
打赏
举报
回复
关注
tomtom123
2006-10-09
打赏
举报
回复
MARK
jiechifeiniao
2006-10-09
打赏
举报
回复
如果 是== 来 判断两个引用类型的值
那么,系统会怎么处理呢
亮灯了
2006-10-09
打赏
举报
回复
不错,学习中。
yixianggao
2006-10-09
打赏
举报
回复
自己查查 MSDN 就都明白了!
不会自学的人居然还敢冒充程序员?!
wangjiafeng2008
2006-10-09
打赏
举报
回复
string str1 = "abcd";
string str2 = str1;
str2 = "efgh";// str1 is still "abcd" here
why is still "abcd" over there
_______
原因是因为
在c#中string 虽然是引用类型
但在所有的字符串操作 都会先开辟一段缓存,然后把操作的结果写入缓存,最后把引用添加到这段缓存上,所以str2指向的是新的内存空间
哥们你验证么?????
DreamerX2004
2006-10-09
打赏
举报
回复
区别于Java,C#中两者相同。
Fanny
2006-10-09
打赏
举报
回复
jiechifeiniao(飛鳥) ( ) 信誉:100 Blog
如果 是== 来 判断两个引用类型的值
那么,系统会怎么处理呢
========================
如果用==来判断两个对象一样只比较两个对象的值,但这种比较没有Equals比较的更准确
所以推荐用Equals。
BreakCode
2006-10-09
打赏
举报
回复
你可以在即使窗口看一下对该对象的分析..... .....
cancerser
2006-10-08
打赏
举报
回复
string str1 = "abcd";
string str2 = str1;
str2 = "efgh";// str1 is still "abcd" here
why is still "abcd" over there
_______
原因是因为
在c#中string 虽然是引用类型
但在所有的字符串操作 都会先开辟一段缓存,然后把操作的结果写入缓存,最后把引用添加到这段缓存上,所以str2指向的是新的内存空间
ilove8
2006-10-08
打赏
举报
回复
string str1 = "abcd";
string str2 = str1;
str2 = "efgh";// str1 is still "abcd" here
why is still "abcd" over there
_西瓜皮_
2006-10-08
打赏
举报
回复
谢了各位大人.
junsir
2006-10-08
打赏
举报
回复
不懂 帮顶 顺便接分
lingbo_wx
2006-10-08
打赏
举报
回复
up
tyh76er
2006-10-08
打赏
举报
回复
== 运算符 C# 运算符
对于预定义的值类型,如果操作数的值相等,则相等运算符 (==) 返回真,否则,返回假。对于除 string 类型以外的引用类型,如果两个操作数引用相同的对象,则 == 返回真。对于 string 类型,== 将比较字符串的值。
-------------------------------
Object.Equals 方法 [C#]
确定两个 Object 实例是否相等。
---------------------------------------
fancystyle
2006-10-08
打赏
举报
回复
帮顶
真相重于对错
2006-10-08
打赏
举报
回复
==
对于预定义的值类型,如果操作数的值相等,则相等运算符 (==) 返回真,否则,返回假。对于除 string 类型以外的引用类型,如果两个操作数引用相同的对象,则 == 返回真。对于 string 类型,== 将比较字符串的值。
确定两个 Object 实例是否相等。
Equals
确定两个 Object 实例是否相等。
另外,主要看类如何override 这个函数和如何重载运算符
pol000
2006-10-08
打赏
举报
回复
帮楼主顶~
cancerser
2006-10-08
打赏
举报
回复
楼长一定问的是字符串比较
在c#中 两者的作用是完全一样的这点与java不同
因为一使用== 就会调用Equals,
(要是直接用Equals 不就少了个调用,快点是点)
在字符串比较中 尽量使用Equals因为其平均效率要高于其他的比较方法 ,特别高于compare
因为Equals会先比较散列码(不用明白是啥,只有内置对象才有),其速度是compare100倍以上
不包含内置对象的比较也要稍微快点
加载更多回复(10)
C#
Equals
与 ==
摘要:
C#
中
Equals
与==的
区别
主要体现在比较机制和适用场景。
Equals
是虚方法,默认比较引用(可重写为值比较);==是运算符,值类型比较值,引用类型比较引用(可重载)。string类特殊处理,两者均比较内容。自定义类需重写
Equals
并重载==以实现值比较,同时需配套实现GetHashCode。注意null安全性(
Equals
需非空调用)和结构体的==需显式重载。建议保持两者行为一致以避免混淆。
C#
== 与
equals
C#
中
我们常常要用到这两个方式去做等于判断,那么接下来就一起看一下两者的
区别
吧。值类型: 结果:在
C#
中
对于值类型的比较不管是用【==】还是【
equals
】都是对于其内容的比较,也就是说对于其值的比较,相等则返回true 不相等则返回false;引用类型: string 类型: 但是对于除string类型以外的引用类型 【==】比较的是在对象在栈上的引用是否相同而【
equals
】则比较的是对象在堆上的内容是否相同 结果:而当我定义两个object 引用指向两个string变量时再进行比较 结
C#
== 与
Equals
/结果为false //使用Reference
Equals
比较两对象的引用是否相等。
Unity
中
C#
的 == 和
Equals
的
区别
是什么
在示例代码
中
,我们重写了 Person 类的
Equals
方法,并在 GetHashCode() 方法
中
使用了 HashCode.Combine() 方法来生成哈希码。重写 GetHashCode() 方法的目的是让两个相等的对象具有相同的哈希码,以确保它们能够被正确地放置在哈希表
中
的同一个桶
中
,并在需要时能够高效地进行查找和比较操作。如果我们自定义一个类,并且没有重写
Equals
方法,那么该类的对象在使用
Equals
方法进行比较时,默认情况下会比较它们的引用,而不是内容。
C#
中
equals
与==的
区别
C#
equals
与==的
区别
对于值类型,如果对象的值相等,则相等运算符 (==) 返回 true,否则返回 false。 对于string 以外的引用类型,如果两个对象引用同一个对象,则 == 返回 true。 对于string 类型,== 比较字符串的值。 ==操作比较的是两个变量的值是否相等。
equals
()方法比较的是两个对象的内容是否一致.
equals
也就是比较引用类型是否是对同一个...
C#
111,128
社区成员
642,532
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章