如何将字典内容写入消息框中

3
在VB.NET中,我想将一个字典的内容写入消息框中。
这个字典相当基础。
    Dim x As New Dictionary(Of Integer, Users)
    x.Add("1", New Users("1", "Simon"))

用户类包含两个属性,用户ID(整数)和用户名(字符串)。
我正在努力编写字典内容。我想将每个词典条目写成一个字符串,但是我一直失败,因为我不断收到错误信息:
“参数'提示'无法转换为类型“字符串”。”
3个回答

4
您正在传递一个字符串,而您指定的是一个整数:
解决方法:
Dim x As New Dictionary(Of Integer, Users)
x.Add(1, New Users(1, "Simon"))

然后展示内容:

Dim sb As New StringBuilder
For Each item As KeyValuePair(Of Integer, Users) In x
  sb.AppendLine(item.Key & ") " & item.Value.ToString)
Next
MessageBox.Show(sb.ToString())

您的Users类需要重写ToString函数或更改ToString调用,以显示用户名称属性。

更新后的Users类:

Public Class Users
  Private _p1 As Integer
  Private _p2 As String

  Sub New(ByVal p1 As Integer, ByVal p2 As String)
    _p1 = p1
    _p2 = p2
  End Sub

  Public Overrides Function ToString() As String
    Return _p2
  End Function
End Class

感谢您的回复。一切似乎都运行良好,但它没有输出类内容(1,Simon),而只是类名。我猜这与需要重写ToString函数有关?我的类如下:Class UsersPrivate _p1 As String Private _p2 As String Sub New(ByVal p1 As String, ByVal p2 As String) ' TODO: 完成成员初始化 _p1 = p1 _p2 = p2 End SubEnd Class - Simon
@user1139093 我更新了答案。你应该考虑给变量更好的名称。p1和p2并没有传达任何信息。此外,我将p1更改为整数。如果它需要是一个字符串,那么你需要将字典更改为(Of String, String),而不是整数。 - LarsTech
再次感谢您的回复。我刚开始尝试理解这一切,所以我一定会使用更好的名称重新命名我的变量。再次感谢! - Simon

1

给你。

        Dim sbMessage As New System.Text.StringBuilder(500)

        For Each wKey As Integer In x.Keys
            sbMessage.Append("Key = ").Append(wKey).Append(", Value = ").Append(x.Item(wKey).ToString()).AppendLine()
        Next
        MessageBox.Show(sbMessage.ToString)

为了让它有用,您需要在Users类中重写ToString方法。例如,假设这个类中有一个ID和一个名称:
Public Overrides Function ToString() As String
    Dim sbText As New System.Text.StringBuilder(500)

    sbText.Append("ID = ").Append(Me.Id).Append(", Name = ").Append(Me.Name)

    Return sbText.ToString
End Function

1
For Each kvp As KeyValuePair(Of Integer, Users) In x
            Console.WriteLine("Key = {0}, Value = {1}", _
                kvp.Key, kvp.Value)
        Next kvp

考虑到您的Value将是一个Users对象,正如@LarsTech所说,您应该将整数传递给字典而不是字符串。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接