C# 获取列表中的下一项<;字符串>;基于当前项目

C# 获取列表中的下一项<;字符串>;基于当前项目,c#,string,list,indexing,C#,String,List,Indexing,我有一个列表,其中以字符串形式包含工资卷编号,例如: List<string> payrollnumbers = new List<string>() { "0","1","3" }; 您只需使用++currpayrollIndex而不是currpayrollIndex++: var nextPayrollIndex = ++currpayrollIndex; 您还可以完全删除该行,并在访问阵列时将其放入: var payrollnumber = payrollnu

我有一个
列表
,其中以字符串形式包含工资卷编号,例如:

 List<string> payrollnumbers = new List<string>() { "0","1","3" };

您只需使用
++currpayrollIndex
而不是
currpayrollIndex++

var nextPayrollIndex = ++currpayrollIndex;
您还可以完全删除该行,并在访问阵列时将其放入:

var payrollnumber = payrollnumbers[++currpayrollIndex];

但是,它很难阅读,浏览代码的人可能不会注意到它

您需要做的就是使用
++currpayrollIndex
而不是
currpayrollIndex++

var nextPayrollIndex = ++currpayrollIndex;
您还可以完全删除该行,并在访问阵列时将其放入:

var payrollnumber = payrollnumbers[++currpayrollIndex];
但是,它非常不可读,浏览代码的人可能不会注意到它

您必须更改:

 var nextPayrollIndex = currpayrollIndex++;

您的解决方案
currpayrollIndex
值在分配给
nextParollinex
变量后是否增加1

当您将增加时间
currpayrollIndex
更改为1时-您首先增加1
currpayrollIndex
值,然后分配给
nextpyrollindex
变量

这是一个很好的解释:

此外,您可能希望将代码更改为:

var currpayrollIndex = payrollnumbers.IndexOf(currpayrollnumber);
var payrollnumber = payrollnumbers[++currpayrollIndex ];
它将更具可读性,您必须更改:

 var nextPayrollIndex = currpayrollIndex++;

您的解决方案
currpayrollIndex
值在分配给
nextParollinex
变量后是否增加1

当您将增加时间
currpayrollIndex
更改为1时-您首先增加1
currpayrollIndex
值,然后分配给
nextpyrollindex
变量

这是一个很好的解释:

此外,您可能希望将代码更改为:

var currpayrollIndex = payrollnumbers.IndexOf(currpayrollnumber);
var payrollnumber = payrollnumbers[++currpayrollIndex ];

由于您使用的是后缀增量运算符(
i++
),因此它的可读性将更高。
currpayrollIndex
递增之前,原始值是分配给
nextParollIndex
的值。您可以使用前缀增量运算符(
++i
),但我建议您要么明确表示要添加1,要么根本不使用增量
currpayrollIndex

var nextPayrollIndex = currpayrollIndex + 1;
或者只需增加
currpayrollIndex
并使用它而不是
nextParollinex

currpayrollIndex++;
var payrollnumber = payrollnumbers[currpayrollIndex];

我还建议添加检查,以确定
currpayrollnumber
何时不在列表中(
IndexOf
将返回-1)以及何时是最后一项(以避免
ArgumentOutOfRangeException

,因为您使用的是后缀增量运算符(
I++
)原始值是在
currpayrollIndex
递增之前分配给
nextParollinex
的值。您可以使用前缀增量运算符(
++i
),但我建议您要么明确表示要添加1,要么根本不使用增量
currpayrollIndex

var nextPayrollIndex = currpayrollIndex + 1;
或者只需增加
currpayrollIndex
并使用它而不是
nextParollinex

currpayrollIndex++;
var payrollnumber = payrollnumbers[currpayrollIndex];

我还建议添加检查,以确定
currpayrollnumber
何时不在列表中(
IndexOf
将返回-1),以及它何时是最后一项(以避免
ArgumentOutOfRangeException

因此此代码不起作用?使用
++currpayrollIndex而不是
索引++
btw正在使用
LinkedList
选项吗?这会更有意义。您只需使用
LinkedListNode.Next
属性即可。此外,存储当前索引似乎比存储当前值更安全,以防重复出现values@TimSchmelter.那么这个代码不起作用了吗?使用
++currpayrollIndex而不是
索引++
btw正在使用
LinkedList
选项吗?这会更有意义。您只需使用
LinkedListNode.Next
属性即可。此外,存储当前索引似乎比存储当前值更安全,以防重复出现values@TimSchmelter .