在VB.NET中返回泛型类型

时间:2011-03-07 18:15:40

标签: 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;
 }

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

2 个答案:

答案 0 :(得分:3)

您可以使用产生以下结果的C# to VB.NET converter

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

此外:

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

VB.NET and C# Comparison

答案 1 :(得分:2)

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

来自C# to VB.NET converter