我有List<string>
,其中包含工资单数字作为字符串,例如:
List<string> payrollnumbers = new List<string>() { "0","1","3" };
我想获取列表中的下一个值,所以:
currpayrollnumber
为0,我想得到值1,currpayrollnumber
为1,我想得到值3,我有以下代码,但它不能像预期的那样工作:
List<string> payrollnumbers = new List<string>();
// fill payrollnumbers ...
var currpayrollIndex = payrollnumbers.IndexOf(currpayrollnumber);
var nextPayrollIndex = currpayrollIndex++;
var payrollnumber = payrollnumbers[nextPayrollIndex];
答案 0 :(得分:2)
因为您使用的是后缀增量运算符(i++
),所以原始值是在nextPayrollIndex
递增之前分配给currpayrollIndex
的值。您可以使用前缀增量运算符(++i
)代替,但我建议您明确表示您要添加1而不是增加currpayrollIndex
。
var nextPayrollIndex = currpayrollIndex + 1;
或者只是增加currpayrollIndex
并使用它代替nextPayrollIndex
。
currpayrollIndex++;
var payrollnumber = payrollnumbers[currpayrollIndex];
我还建议添加检查currpayrollnumber
何时不在列表中(IndexOf
将返回-1)以及何时它是最后一项(以避免ArgumentOutOfRangeException
)
答案 1 :(得分:1)
您需要做的就是使用++currpayrollIndex
代替currpayrollIndex++
:
var nextPayrollIndex = ++currpayrollIndex;
您也可以完全删除该行,并在访问该阵列时将其放入:
var payrollnumber = payrollnumbers[++currpayrollIndex];
然而,这是非常难以理解的,人们可能不会注意到代码
答案 2 :(得分:1)
你必须改变:
var nextPayrollIndex = currpayrollIndex++;
到
var nextPayrollIndex = ++currpayrollIndex;
在将分配给currpayrollIndex
变量之后,您的解决方案nextPayrollIndex
值是否增加1
当您将增加的时刻currpayrollIndex
更改为1时 - 您首先增加1 currpayrollIndex
值,下一步增加到nextPayrollIndex
变量
这里有很好的解释:
What is the difference between i++ and ++i?
此外,您可能希望将代码更改为:
var currpayrollIndex = payrollnumbers.IndexOf(currpayrollnumber);
var payrollnumber = payrollnumbers[++currpayrollIndex ];
它将更具可读性