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

Hat*_*ath 48 vb.net

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

pan*_*ral 45

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

  • 这是价值平等.我相信你想要`如果不是没有,那么......'.在此上下文中,您不需要强制转换Nothing值. (4认同)
  • MyStructInstance.Equals(ctype(nothing,TypeOfMyStruct)) 有效。'=' 没有 (2认同)

Ant*_*lev 37

这是以下任何一个:

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
Run Code Online (Sandbox Code Playgroud)

Nothing在VB.NET中将事件分配给值类型是完全正常的.只有在为泛型类型指定New或者Structure约束时才能使用后者.

  • 反射器建议使用以下(但等效)行:Dim变量As T = CType(Nothing,T) (15认同)
  • 如果有人想在这里确认版本,我一起打了[GitHub上的一些代码](https://github.com/patridge/VB-default-tests)以确认正确版本的结果是相同的.它是一个精简的控制台应用程序,带有一堆`Debug.Assert`调用.抓住F5跑吧. (2认同)