gpt4 book ai didi

.net - 如何在 VB.NET 中使用泛型?

转载 作者:行者123 更新时间:2023-12-01 01:44:42 24 4
gpt4 key购买 nike

我有以下代码:

Public Shared Function GetListAsString(ByVal data As List(Of String)) As String
Dim retVal As String = "| "
For Each obj As String In data
retVal = retVal + obj.ToString() + " |"
Next
Return retVal
End Function

它将列表转换为可打印的字符串。现在它被设置为只使用列表。我觉得它应该能够与任何类型的集合一起使用。我是集合和泛型的新手。当我尝试做类似的事情时
Public Shared Function GetListAsString(ByVal data As Collection(T)) As String
Dim retVal As String = "| "
For Each obj As String In data.ToString()
retVal = retVal + obj.ToString() + " |"
Next
Return retVal
End Function

我得到一个错误。谁能指出我正确的方向?

最佳答案

您没有从编译器获得非常有用的错误消息。你忘记了使函数通用,它不能产生一个像样的诊断。让我们关注更大的问题:

    For Each obj As String In data.ToString()
retVal = retVal + obj.ToString() + " |"
Next

For 循环被破坏,从 data.ToString() 开始。只用数据。并且数据的元素类型是T,而不是String。此外,由于您只是枚举集合,您可以使用较小的接口(interface) IEnumerable<>,使其适用于更多的集合类型。因此:
Public Shared Function GetCollectionAsString(Of T)(ByVal data As IEnumerable(Of T)) As String
Dim retVal As String = "| "
For Each obj As T In data
retVal = retVal + obj.ToString() + " |"
Next
Return retVal
End Function

注意添加的 (Of T)在函数名称之后,那是解决原始错误消息的名称。

关于.net - 如何在 VB.NET 中使用泛型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7093936/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com