Vb.net 对于列表数组(KeyValuePair(String,Integer))上的每个循环

Vb.net 对于列表数组(KeyValuePair(String,Integer))上的每个循环,vb.net,foreach,keyvaluepair,Vb.net,Foreach,Keyvaluepair,我在为一个“KeyValuePair(Of)”集合的“List(Of)”上的每个循环执行时遇到问题 我正在将一个参数数组传递给一个函数 ParamArray args() As List(Of KeyValuePair(Of String, Integer)) 然后我试着在这个系列中为每个人做一个测试 For Each arg As KeyValuePair(Of String, Integer) In args 我得到的错误是: 无法将“System.Collections.Generic

我在为一个“KeyValuePair(Of)”集合的“List(Of)”上的每个循环执行时遇到问题

我正在将一个参数数组传递给一个函数

ParamArray args() As List(Of KeyValuePair(Of String, Integer))
然后我试着在这个系列中为每个人做一个测试

For Each arg As KeyValuePair(Of String, Integer) In args
我得到的错误是:

无法将“System.Collections.Generic.List(System.Collections.Generic.KeyValuePair(字符串,整数))类型的值转换为“System.Collections.Generic.KeyValuePair(字符串,整数)”类型

我就是不知道怎么做,也找不到任何例子来说明怎么做

我现在唯一的想法就是

For Each arg As Object In args

然后将对象转换为KeyValuePair,但必须有一种更简洁的方法…

args
是一个数组。这意味着您有一个
列表(KeyValuePair(String,Integer)数组

要访问for each中的每个项目,您需要执行以下操作(未测试):

根据我上面的评论:您最好使用
字典(字符串、整数)
和一些Linq语句


编辑:此外,根据您试图对每个项执行的操作,以任何方式修改该项都会导致异常,因为您无法修改正在迭代的集合。

这声明了一个列表数组:

ParamArray args() As List(Of KeyValuePair(Of String, Integer))
您可能指的是KVP阵列(选项1):

或(选项2):

或(选项3):


为什么不直接使用
字典(字符串、整数)
?正如前面指出的那样,args被声明为数组。如果这不是您的意图,请删除
()
应该可以修复它。@tinstaafl:
args
作为paramaryTanks传递。为此,此选项工作正常。此paramary用于灵活的参数数量。原始代码(VB6)使用可选和isMissing,这是我在VB.NET中无法执行的,这是我的解决方案。很高兴我的解决方案有效。您介意将问题标记为已回答,以供将来参考吗?单击我答案旁边的复选标记。它将变为绿色,将问题标记为已回答。好的,这不明显。我正在查看顶部,以查找与答案相关的内容原来的问题。。。
ParamArray args() As List(Of KeyValuePair(Of String, Integer))
ParamArray args As KeyValuePair(Of String, Integer)
args() As KeyValuePair(Of String, Integer)
args As List(Of KeyValuePair(Of String, Integer))