返回 VB.NET 中的通用类型

web*_*orm 4 vb.net generics

Stack Overflow 中的某人(w69rdy)帮助我提供了一个很好的示例来处理数据库输出,该输出可能为 NULL,传递到函数中。问题是我可以理解用 C# 编写的方法,但在理解如何在 VB.NET 中重写该方法时遇到问题。该方法使用泛型,我迷路了。这是用 C# 编写的方法..

 public T ParseValue<T>(System.Data.SqlClient.SqlDataReader reader, string column)
 {
     T result = default(T);

     if (!reader.IsDBNull(reader.GetOrdinal(column)))
         result = (T)reader.GetValue(reader.GetOrdinal(column));

     return result;
 }
Run Code Online (Sandbox Code Playgroud)

这是如何用 VB.NET 编写的?返回泛型类型时方法签名如何变化?

Mat*_*att 7

您可以使用C# 到 VB.NET 转换器,它会生成以下结果:

Public Function ParseValue(Of T)(reader As System.Data.SqlClient.SqlDataReader, column As String) As T
    Dim result As T = Nothing

    If Not reader.IsDBNull(reader.GetOrdinal(column)) Then
        result = DirectCast(reader.GetValue(reader.GetOrdinal(column)), T)
    End If

    Return result
End Function
Run Code Online (Sandbox Code Playgroud)

此外:

我推荐以下资源来帮助了解 VB.NET 和 C# 之间的语法差异。它有一个关于泛型的部分:

VB.NET 和 C# 比较