c# - VB.NET : What is static T (C#) in VB. 网络?

标签 c# .net c#-to-vb.net

考虑:

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/

相关文章:

c# - 我们可以在 MonoRail 中的不同操作上使用带扩展和不带扩展吗?

c# - 如何使用 Visual Studio 为 .net Windows 服务创建安装程序

c# - 获取分配给服务器的所有IP

c# - 此代码的 VB.NET 版本是什么?

c# - C# "is"关键字在 VB.NET 中的等效项是什么?

.net - 在调用基类型构造函数之前,是否可以强制 VB.NET 初始化实例变量?

C# 强制表单焦点

c# - 如何使用固定策略加密 Amazon CloudFront 签名以访问私有(private)内容

C# 测试用户是否具有对文件夹的写入权限

c# - 如何在我的应用程序 C# 中创建控件的快捷方式列表?