根据当前项获取列表<字符串>中的下一项
本文关键字:一项 字符串 获取 列表 | 更新日期: 2023-09-27 18:34:55
我有一个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];
因为您使用的是后缀增量运算符 ( i++
(,所以原始值是在递增之前分配给nextPayrollIndex
的值currpayrollIndex
。 您可以使用前缀递增运算符 ( ++i
( 代替,但我建议要么明确表示您正在添加 1 而不是根本不增加 currpayrollIndex
。
var nextPayrollIndex = currpayrollIndex + 1;
或者只是递增currpayrollIndex
并使用它而不是nextPayrollIndex
.
currpayrollIndex++;
var payrollnumber = payrollnumbers[currpayrollIndex];
我还建议添加检查,以确定currpayrollnumber
何时不在列表中(IndexOf
将返回-1(以及何时是最后一项(以避免ArgumentOutOfRangeException
(
您
需要做的就是使用 ++currpayrollIndex
而不是 currpayrollIndex++
:
var nextPayrollIndex = ++currpayrollIndex;
您也可以完全删除该行,并在访问阵列时将其放入:
var payrollnumber = payrollnumbers[++currpayrollIndex];
但是,它非常不可读,并且可能不会被浏览代码的人注意到
你必须改变:
var nextPayrollIndex = currpayrollIndex++;
自
var nextPayrollIndex = ++currpayrollIndex;
是你的解决方案currpayrollIndex
赋值后增加 1 分配给变量后nextPayrollIndex
当您将增加currpayrollIndex
矩更改为 1 时 - 您首先增加 1 currpayrollIndex
值,然后分配给nextPayrollIndex
变量
这里有很好的解释:
i++和++i有什么区别?
此外,您可能还希望将代码更改为以下内容:
var currpayrollIndex = payrollnumbers.IndexOf(currpayrollnumber);
var payrollnumber = payrollnumbers[++currpayrollIndex ];
它将更具可读性