c# - 泛型的默认值

标签 c# .net vb.net generics

如何在 VB 中为泛型创建默认值?在 C# 中我可以调用:

T variable = default(T);
  1. 如何在 VB 中执行此操作?
  2. 如果这只是返回 null (C#) 或什么都不返回 (vb) 那么值类型会发生什么情况?
  3. 有没有办法为自定义类型指定默认值?例如,如果我希望默认值等同于在我的类上调用无参数构造函数,该怎么办。

最佳答案

问题一:

Dim variable As T
' or '
Dim variable As T = Nothing
' or '
Dim variable As New T()

请注意,后者仅在您为泛型类型指定 Structure 约束时有效(对于引用类型,VB 中的 New T() 做的事情不是 default(T) 在 C# 中。

问题2:

对于值类型,结构的所有成员都被“清空”,即所有引用类型成员都设置为 null (Nothing),并且所有值类型依次为归零。

不,因为 string 是引用类型,它不会导致 "" 字符串,如其他答案中所建议的那样。

问题三:

不,没有办法指定它。 Stack Overflow 上已经有一些关于此的线程,例如here .乔恩发布了一个excellent explanation这是为什么。

关于c# - 泛型的默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/354136/

相关文章:

c# - 如何使用 log4net 记录 Trace 消息?

c# - 是否可以在 Moq 中传递参数值?

c# - 如何防止类被构建到发布 DLL 中?

c# - 如何更改 ScriptManager 中已注册脚本的顺序

vb.net - Visual Basic 6.0 到 VB.NET 声明

vb.net - 如何禁用对象浏览器的自动打开?

c# - 将应用程序从 dotnet 2.0 迁移到 3.5

c# - 行的最小高度 [Migradoc]

.net - 以管理员身份运行 .NET 应用程序

c# - 有没有办法在运行时构建新类型?