考虑:
public static T GetValueOrDefault<T>(this IDataReader reader,string columnName) T returnValue = default(T);
我想实现像this这样的东西来检查DBNull.我可以很好地遵循代码,但我不太明白VB.NET中的静态T是什么.有人可以解释一下吗?
Shared中VB中的静态等价物.共享方法通常放在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