为什么最小值返回为零而最大值返回为适当值

时间:2019-06-19 17:16:47

标签: arrays vb.net max min

CREATE TRIGGER trumpist BEFORE INSERT ON auth_user FOR EACH ROW EXECUTE PROCEDURE trumpisizer();

我得到的不是0的最小值

2 个答案:

答案 0 :(得分:2)

数组的索引为零,并且使用最高可寻址索引进行声明,因此当您

Dim Temp(3) 

您正在创建具有 4 个插槽[0, 1, 2, 3]的阵列。 IMO,这是语言设计的一个高度可疑的地方。

在创建数组时,所有插槽均使用值0初始化。然后将值放在索引[1, 2, 3]中,而不是索引0中。

因此,数组将始终在索引0的{​​{1}}处具有一个值。

您可以首先通过声明0有3个插槽而不是4个插槽来解决此问题:

Temp

然后调整循环:

Dim Temp(2)

https://docs.microsoft.com/en-us/dotnet/visual-basic/programming-guide/language-features/arrays/

答案 1 :(得分:1)

为将来参考,您可以使用GetLowerBound()GetUpperBound()获取数组的下限和上限。即使您在稍后的某个时间更改数组的大小,这也将使您的代码正常工作(而不是硬编码循环的上限):

For i As Integer = Temp.GetLowerBound(0) To Temp.GetUpperBound(0)
    Debug.Print(i & ": " & Temp(i))
Next