vb.net关于数组比较

czxinc 2017-08-20 03:53:19

Dim A() = {0,1,2}
Dim B() = {0,1,2}
A.Equals(B)
A Is B

为什么这两种方法返回的都是False啊,明明都相等。
...全文
1441 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
ttsffgg 2017-09-19
  • 打赏
  • 举报
回复
张三 有两个眼睛 一个鼻子 一个嘴巴 李四 有两个眼睛 一个鼻子 一个嘴巴 那么 张三等于李四了吗? 张三就是李四了吗? 明白了吗?
kareforever 2017-09-16
  • 打赏
  • 举报
回复
需要遍历一遍。各个都比较一下才行。
  • 打赏
  • 举报
回复
你自己并没有给出“相等”的判断规则,只是自己想象了一下。 要判断这样的两个对象是否相等,需要自己能写出规则来。例如我写
Imports System.Runtime.CompilerServices

Module Module1

    <Extension()>
    Function EqualsWith(a As Integer(), b As Integer()) As Boolean
        Return Not (From x In a Where Not b.Contains(x)).Any And Not (From x In b Where Not a.Contains(x)).Any
    End Function
End Module
那么就能判断
Dim A() = {0, 1, 2}
Dim B() = {0, 1, 2, 3}
Dim r = A.EqualsWith(B)
是否相等了。但是这是我的规则。 结果不重要,重要地是这里用到了什么编程知识点,为什么要自己写一个函数,这些知识才重要。
  • 打赏
  • 举报
回复
相等不想等,都要到内部机制上来判断,不是看你自己怎么想像。所以要看文档,要理解更深入一点的实现机制。
rmini 2017-09-16
  • 打赏
  • 举报
回复
数组是否区分顺序?
raynors 2017-09-15
  • 打赏
  • 举报
回复
用笨办法. 先比长度,再逐个比用不了多少资源 所有的简化办法,编译后都是笨办法.
清晨曦月 元老 2017-08-27
  • 打赏
  • 举报
回复
你所用的方法是比较对象是否是同一个。即引用了同一个对象。你可以循环比较每个元素。
czxinc 2017-08-24
  • 打赏
  • 举报
回复
引用 1 楼 cfrozsqgjl 的回复:
你是比较的两个数组相不相等,很明显你都定义了两个,肯定是不相等的. 要比较结果用SequenceEqual,
应该怎么用啊我找不到这个方法
threenewbee 2017-08-21
  • 打赏
  • 举报
回复
https://msdn.microsoft.com/zh-cn/library/bb908156(VS.95).aspx
橘子皮... 2017-08-21
  • 打赏
  • 举报
回复
引用 楼主 czxinc 的回复:

Dim A() = {0,1,2}
Dim B() = {0,1,2}
A.Equals(B)
A Is B
为什么这两种方法返回的都是False啊,明明都相等。
数组是引用类型,变量里实际上存放的是数组的引用内存地址 你2个数组引用地址肯定不一样,所以不同啊,要是比较2个数组内容是否一致,按微软的说法,比如遍历逐个比较,而且如果数组里包含引用类型数据的话,写法还要特殊一点
cfrozsqgjl 2017-08-20
  • 打赏
  • 举报
回复
你是比较的两个数组相不相等,很明显你都定义了两个,肯定是不相等的. 要比较结果用SequenceEqual,

16,554

社区成员

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

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