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
分配给值类型也非常好。只有在为泛型类型指定New
或Structure
约束时,后者才有可能。
【讨论】:
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 等效项的主要内容,如果未能解决你的问题,请参考以下文章