C# 的默认值(T)的 VB 等效项

Posted

技术标签:

【中文标题】C# 的默认值(T)的 VB 等效项【英文标题】:VB equivalent for C#'s default(T) 【发布时间】:2010-10-24 10:39:02 【问题描述】:

C# 的 default(T) - default operator 的 VB 等价物是什么

【问题讨论】:

【参考方案1】:

这些都是:

Dim variable As T
Dim variable As T = Nothing
Dim variable As New T()
Dim variable As T = CType(Nothing, T) 'this is suggested by reflector

在 VB.NET 中将 Nothing 分配给值类型也非常好。只有在为泛型类型指定NewStructure 约束时,后者才有可能。

【讨论】:

Reflector 建议使用以下(但等效)行:Dim variable As T = CType(Nothing, T) 如果有人想在这里确认版本,我一起拍了some code on GitHub 以确认结果与正确版本相同。这是一个精简的控制台应用程序,带有一堆Debug.Assert 调用。只需抓住并按 F5 即可运行。【参考方案2】:

default(T) 最接近的等价物实际上是CType(Nothing, T),因为它可以在使用default(T) 的任何上下文中使用(即作为表达式)。

【讨论】:

不适用于If Not id = CType(Nothing, TId) Then...的情况 这就是价值平等。我相信你想要If Not id Is Nothing Then ...。在这种情况下,您不需要强制转换 Nothing 值。 MyStructInstance.Equals(ctype(nothing,TypeOfMyStruct)) 有效。 '=' 没有

以上是关于C# 的默认值(T)的 VB 等效项的主要内容,如果未能解决你的问题,请参考以下文章

c# 2.0 中可空值的默认值

默认(类型)的编程等效项

如何在 C# 中覆盖默认值(T)? [复制]

c#中泛型类型的默认值[重复]

vb datetimepicker 默认值设置为08:00:00

Select2:设置下拉列表的默认值,从 C# 模型中获取的数据以剃刀语法