是否可以使用自定义结构代替 KeyValuePair?

代替

For Each kvp As KeyValuePair(Of class1,class2) In myDict
  Dim c1 As kvp.Key
  Dim c2 As kvp.Value
Next

我想用
For Each kvp As myKvp In myDict
  Dim c1 As kvp.P1
  Dim c2 As kvp.P2
Next

我只想使用 myKvp 代替 KeyValuePair(Of class1,class2)(不适用于其他类型)。

我尝试将 myKvp 创建为
Public Structure myKvp

  Public P1 As class1
  Public P2 As class2

  Public Sub New(_p1 As class1,_p2 As class2)
    P1 = _p1
    P2 = _p2
  End Sub

End Structure

但我收到了消息
System.Collections.Generic.KeyValuePair(Of ASP...class1, ASP...class2) 类型的值无法转换为“ASP...myKvp”。

最佳答案

您需要显式创建 myKvp 的实例。您可以使用 Linq 轻松完成:

For Each kvp As myKvp In myDict.Select(Function(x) New myKvp(x.Key, x.Value))
  Dim c1 = kvp.P1
  Dim c2 = kvp.P2
Next

关于.net - 如何使用自定义结构代替 KeyValuePair?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6104060/

10-13 00:29