我有以下代码:
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/