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

标签 .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

我试图以此做一个通用函数,但是做不到。我如何制作一个通用函数,该函数将接受一个特定的T并将其设为Nullable(T)?

最佳答案

这里有一个相同的问题(在C#中):Convert string to nullable type (int, double, etc...)

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

关于.net - 创建将字符串转换为可为空的数字的通用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1019346/

相关文章:

c# - 我如何在 C# 中获取 %LocalAppData%?

c# - 拦截MS Windows的 'SendTo'菜单调用?

c# - 扩展方法和新发布的扩展程序集

c# - 扩展方法中的 Lambdas : Possible memory leak?

javascript - 将 jquery 模态弹出脚本附加到按钮事件

C# 奇怪的 WPF 组合框行为

.net - 解释 SetWindowsHookEx/WH_KEYBOARD_LL 的正确逻辑

vb.net - 如何捕获函数返回KeyValuePair(Of Date,Date)中的错误

asp.net - 在 ASP.NET 应用程序上记录 Visual Basic 异常的最佳方法是什么?

.net - 引用程序集中的扩展方法?