首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VB Dotnet >

一个类型转换的有关问题,希望可以用范型解决~

2012-01-28 
一个类型转换的问题,希望可以用范型解决~~~下面是把一个字符串根据一定的分隔符分割成一个single数组的例

一个类型转换的问题,希望可以用范型解决~~~
下面是把一个字符串根据一定的分隔符分割成一个single数组的例子,能不能用范型做成分割成任意数组(如integer,double,date之类的),我试了几次都说T类型无法换成其它类型,该怎样写才行呢?
     
Public   Shared   Function   ConvertToSingle(ByVal   input   As   String)   As   Single
  Return   CSng(input)
End   Function

Private   Shared   Function   GetList(ByVal   strList   As   String,   ByVal   separator   As   String)   As   Single()
  Dim   pList()   As   String   =   strList.Split(separator)
  Dim   result   As   Single()   =   Array.ConvertAll(pList,   New   Converter(Of   String,   Single)(AddressOf   ConvertToSingle))
  Return   result
End   Function

[解决办法]
Public Shared Function ConvertToSingle(Of T)(ByVal input As String) As T
'Return CSng(input)
End Function


Private Shared Function GetList(Of T)(ByVal strList As String, ByVal separator As String) As T()
Dim pList() As String = strList.Split(separator)
Dim result As T() = Array.ConvertAll(pList, New Converter(Of String, T)(AddressOf ConvertToSingle))
Return result
End Function

注释了一句,那句我不知道如何写。我只能写到这里了。万能转换估计很难写好。
[解决办法]
大概的写了一下,说实话,也不太清楚泛型是不是这样用,第一次写,呵呵,见笑了:

Imports System.Collections.Generic
Public Class Form1

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Dim cc As New MyType(Of Double)
Dim dd As Double()
'dd的数据类型必须符合cc的泛型类型
dd = cc.GetNewList( "123.123,234,345,456 ", ", ")
For Each ee As Double In dd
Console.WriteLine(ee)
Next
End Sub

End Class

Public Class MyType(Of T)
Private Function ConvertTo(ByVal input As String) As T
Return CType(DirectCast(input, Object), T)
End Function

Public Function GetNewList(ByVal strList As String, ByVal separator As String) As T()
Dim pList() As String = strList.Split(separator)
Dim result As T() = Array.ConvertAll(pList, New Converter(Of String, T)(AddressOf ConvertTo))
Return result
End Function
End Class

热点排行