(vb.net )两个类比较问题

prosoft123 2014-08-07 01:14:13
下面代码中可以看到,为什么相同的类clas1和clas2比较时不相同呢?

Sub MySub()
Dim Clas1, Clas2 As New Class1
Clas1.Equals(Clas2) '返回到False
Dim i = Clas1 Is Clas2 '返回到False
End Sub
...全文
209 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
平头哥哥 2014-08-07
  • 打赏
  • 举报
回复
http://msdn.microsoft.com/zh-cn/library/bsc2ak47(v=vs.110).aspx Object.Equals 方法 返回值 类型:System.Boolean 如果指定的对象等于当前对象,则为 true;否则为 false。 -------------------------------------------------------------------------------- Is运算符确定两个对象引用是否引用同一个对象。但是,它不执行值比较。如果 object1 和 object2 引用同一个对象实例,则 result 为 True;如果它们不引用同一个对象,则 result 为 False。该运算符和TypeOf…Is一样,也只适用于引用类型。
qwertxp 2014-08-07
  • 打赏
  • 举报
回复
引用 4 楼 prosoft123 的回复:
我换过来用结构对象来比较时,情况是完全不一样。 两个相同类可以不相同,但是两个结构实例是完全相同的。

Dim struc1, struc2 As New struct1
        MsgBox(struc1.Equals(struc2))
类是引用类型,结构是值类型。
Tiger_Zhao 2014-08-07
  • 打赏
  • 举报
回复
结构是对象,用内容比较。
prosoft123 2014-08-07
  • 打赏
  • 举报
回复
我换过来用结构对象来比较时,情况是完全不一样。 两个相同类可以不相同,但是两个结构实例是完全相同的。

Dim struc1, struc2 As New struct1
        MsgBox(struc1.Equals(struc2))
Tiger_Zhao 2014-08-07
  • 打赏
  • 举报
回复
就是这样规定的,引用对象默认按实例比较相等。
除非类重写 Equals(),那么可以按自定义方式比较相等。
prosoft123 2014-08-07
  • 打赏
  • 举报
回复
引用 1 楼 Tiger_Zhao 的回复:
Class1 和 Class2 分别是两个实例,当然是不等的。
既然是两个实例,但是两个实例不相同?跟实例个数有什么关系呢 只要实例相同就不相同吗?
Tiger_Zhao 2014-08-07
  • 打赏
  • 举报
回复
Class1 和 Class2 分别是两个实例,当然是不等的。

16,722

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧