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

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

【问题讨论】:

    标签: vb.net default-value


    【解决方案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)) 有效。 '=' 没有
    猜你喜欢
    • 1970-01-01
    • 2023-03-07
    • 1970-01-01
    • 2013-07-03
    • 2010-09-24
    相关资源
    最近更新 更多