根据文档:http://msdn.microsoft.com/en-us/library/x13ttww7.aspx:
volatile关键字可以应用于引用类型.
那么为什么在Nullable<T>...参考类型上使用是非法的!
请注意,我实际上并不需要在Nullable<T>字段上使用volatile语义,我偶然遇到了这个错误并且只是好奇.
有一个有趣的奇怪 - 认为有人可能会帮助.
这可以从这个问题的可空类型中获得一些乐趣:
Option Strict On
Module Test
' Call this overload 1
<Extension()>
Function IsNullable(obj As ValueType) As Boolean
Return False
End Function
' Call this overload 2
<Extension()>
Function IsNullable(Of T As {Structure})(obj As Nullable(Of T)) As Boolean
Return True
End Function
Sub Test()
' a is an integer!
Dim a As Integer = 123
' calling IsNullable as an extension method calls overload 1 and returns false
Dim result1 As Boolean = a.IsNullable()
' calling …Run Code Online (Sandbox Code Playgroud)