【发布时间】:2011-01-20 17:00:56
【问题描述】:
我通常在家中使用 C#,我正在查看一些 VB.NET 代码中的性能问题——我希望能够将某些内容与某个类型的默认值进行比较(有点像 C# 的 @ 987654322@关键字)。
public class GenericThing<T1, T2>
{
public T1 Foo( T2 id )
{
if( id != default(T2) ) // There doesn't appear to be an equivalent in VB.NET for this(?)
{
// ...
}
}
}
我被引导相信 Nothing 在语义上是相同的,但如果我这样做:
Public Class GenericThing(Of T1, T2)
Public Function Foo( id As T2 ) As T1
If id IsNot Nothing Then
' ...
End If
End Function
End Class
那么当T2为Integer,id的值为0时,条件依然成立,if的主体被求值。但是,如果我这样做:
Public Function Bar( id As Integer ) As T1
If id <> Nothing Then
' ...
End If
End Function
那么条件不满足,body不求值...
【问题讨论】:
-
可能重复 [VB 等效于 C# 的默认值 (T)](stackoverflow.com/questions/833791/…)
-
@decyclone 这个问题不包括一般情况;事实上,在我的问题中,我表明我知道在大多数情况下使用
Nothing... -
如果 id.Equals(CType(Nothing, T2)) 那么