if (theArray[i-1] < theArray.Length && theArray[i-1] != null)
经过一番研究后我得到了什么。但它只是给了我索引错误,因为我做了i-1。
但我希望if语句检查i-1上的键/索引是否存在,然后做一些事情..
看看我想要做的是加上当前索引旁边的索引值。
for (int i = 0; i < theArray.Length; i++)
{
Left = 0;
Right = 0;
if (i != 0)
{
Left = theArray[i - 1];
}
if (theArray[i + 1] < theArray.Length)
{
Right = theArray[i + 1];
}
calc = Left + Right;
output2.Text += calc + ", ";
}
因此,如果左边有,那么更改左边的值(默认为0,左右),如果右边有,则更改正确的值。然后计算从theArray []获取的两个值。
例如,如果它在theArray [16]上它应该采取左,theArray [15]和theArray [17]并且加在一起。
答案 0 :(得分:2)
我认为你在寻找:
if(i < theArray.Length)
或者可能:
if(i < theArray.Length && theArray[i] != null)
我通常会在这样的循环中使用i
:
for(int i = 0; i < theArray.Length; i++)
更新
您无法使用i-1
,因为在第一次迭代时,i == 0
时,这将评估为-1
。这是数组中的非法索引。
更新2:
我想我明白你现在要做什么。这是一种方法:
for (int i = 0; i < theArray.Length; i++)
{
Left = 0;
Right = 0;
if (i > 0)
{
Left = theArray[i-1];
}
if (i < theArray.Length - 1)
{
Right = theArray[i+1];
}
calc = Left + Right;
output2.Text += calc + ", ";
}
答案 1 :(得分:0)
要检查i
是否为有效数组索引,您可以执行以下操作:
if(i >= theArray.GetLowerBound(0) && i <= theArray.GetUpperBound(0))
然而,只有在罕见的边缘情况下才需要这样做,所以这样做更实际:
if(i >= 0 && i < theArray.Length)
一旦您知道它是有效的索引,您可以根据需要检查null
。
答案 2 :(得分:0)
您的问题是索引还是具有给定索引的数组值? 在数组的情况下,如果0 <0,则可以始终确保索引n“存在”。 n&lt; array.Length。 如果要检查数组值,首先检查(n> 0)索引“under”和(n&lt; array.Length)索引“over”
答案 3 :(得分:-1)
我认为除了Oded所说的,正确的表达方式可能是:
if (i < theArray.Length && i > 0 && theArray[i-1] != null)
因为您正在检查i-1
索引处的值。
答案 4 :(得分:-1)
从您的代码中可以看出,“i”是基于一的,您的数组索引是从零开始的。所以你可以使用:
if ( (i > 0) && (i <= theArray.Length) && (theArray[i-1] != null) )