考虑:
public static T GetValueOrDefault<T>(this IDataReader reader, string columnName)
T returnValue = default(T);
我想实现类似 this 的东西检查 DBNull。我可以很好地理解代码,但我不太明白 VB.NET 中的静态 T 是什么。有人可以解释一下吗?
最佳答案
在Shared
中相当于VB中的static
。共享方法通常放在 Helper 类中,因为它们不需要类的实例即可运行。
类型 T 表示这是一个泛型方法(这是 VB 9 和 C# 3 中的新功能)。泛型方法有效地将类型作为参数或返回泛型类型。
扩展方法在 VB 9/C# 3 中也是新增的。它们允许您通过添加方法来扩展现有类型。您只需要一个 Shared 方法,该方法可在与您的代码相同的命名空间中使用,而在 VB 中,代码必须位于模块中,而不是普通类中。
模块是无法实例化的类,(因此)只有共享方法。它是用 Module 关键字代替 class 关键字声明的。这是您的 VB 代码。
(对于那些知道“在幕后”发生了什么的人来说,将值类型奇怪地设置为 Nothing
确实可以在 VB 中编译,并且是获取值类型默认值的受支持方式) .
Imports System.Runtime.CompilerServices
<Extension()> _
Public Shared Function GetValueOrDefault(Of T)(ByVal reader As IDataReader, ByVal columnName As String) As T
Dim returnValue As T = Nothing
End Function
关于c# - VB.NET : What is static T (C#) in VB. 网络?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/467642/