创建将字符串转换为可空数字的通用方法

Ste*_*ght 6 .net vb.net extension-methods

我有3个类似的功能,只根据数字类型改变:

<Extension()> _
Public Function ToNullableShort(ByVal str As String) As Short?
    Dim intReturn As Short
    If Short.TryParse(str, intReturn) Then
        Return intReturn
    Else
        Return Nothing
    End If
End Function

<Extension()> _
Public Function ToNullableByte(ByVal str As String) As Byte?
    Dim intReturn As Byte
    If Byte.TryParse(str, intReturn) Then
        Return intReturn
    Else
        Return Nothing
    End If
End Function

<Extension()> _
Public Function ToNullableLong(ByVal str As String) As Long?
    Dim intReturn As Long
    If Long.TryParse(str, intReturn) Then
        Return intReturn
    Else
        Return Nothing
    End If
End Function
Run Code Online (Sandbox Code Playgroud)

我试图用这个来制作一个泛型函数,但是不能这样做.如何创建一个通用函数来获取特定的T并使其成为Nullable(T)?

jjx*_*tra 10

这里有一个相同的问题(在C#中):将字符串转换为可空类型(int,double等等)

Public Function ConvertString(Of T As Structure)(ByVal value As String) As System.Nullable(Of T)
    Try
        Return DirectCast(Convert.ChangeType(value, GetType(T)), T)
    Catch
        Return Nothing
    End Try
End Function
Run Code Online (Sandbox Code Playgroud)