gpt4 book ai didi

vb.net - 为什么这些说法会产生相反的结果?

转载 作者:行者123 更新时间:2023-12-01 22:05:13 25 4
gpt4 key购买 nike

我正在尝试过滤对象列表,每个对象都有一个日历年作为其值之一。用户输入开始年份(例如 1920 年)和结束年份(1940 年),任何年份介于这两个值之间的对象都会添加到列表中。因此,对于整个列表中的每个对象,我执行以下条件:

If _end >= _nList(i).Year > _start Then
filterList.Add(_nList(i))
End If

然而,这会返回 false。但是当我把它改成:

If _start < _nList(i).Year <= _end Then
filterList.Add(_nList(i))
End If

这评估为真,并运行代码。 _nList(i).Year 是 1928,_start 是 1920,_end 是 1940。逻辑上,这两个语句应该是等价的:

1940 >= 1928 > 1920
1920 < 1928 <= 1940

但出于某种原因,他们不在这种情况下。我在这里错过了什么?

最佳答案

打开选项严格。它将解释问题。

If a < b < c Then

它检查返回 bool 值的“a < b”。然后将该 bool 值与不可能的“< c”进行比较。它会将“a < b”返回的 bool 值转换为整数,然后将该值与“[converted Boolean] < c”进行比较。这不是您想要的,此错误将与 Option Strict On 一起显示。

需要分成两个比较。

If _end >= _nList(i).Year AndAlso _nList(i).Year > _start Then

您所做的方式可能适用于某些语言,但 vb.net 并非如此。

关于vb.net - 为什么这些说法会产生相反的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52370390/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com