我需要对从Byte派生的Enum类型的变量执行volatile写操作,但是我被困了。
这是我的(示例)代码:
Public Class MyOwnClass
Friend Enum MyEnum As Byte
Val1
Val2
End Enum
Private MyEnumVar As MyEnum = MyEnum.Val1
Friend Sub SetMyEnumVar(ByVal value As MyEnum)
System.Threading.Volatile.Write(MyEnumVar, value) 'Error!
End Sub
End Class
由于Threading.Volatile.Write没有带有这些参数的签名,我收到此错误
Error 1 Overload resolution failed because no accessible Write can be called without a narrowing conversion:
使用方法的所有重载列表。
对第一个参数进行CT分型不起作用,因为CType
返回的是一个转换值,当然不会使用与MyEnumVar
相同的引用,其中该方法明显地获取第一个参数ByRef
。
CObject
也不可行,因为该方法也没有Write(Of T)(T, T)
以外的对象类型的重载,其中T
必须是类类型。
那么我怎样才能达到目的呢?
感谢。
答案 0 :(得分:1)
您可以使用Write(Of T)重载T
是Enum
的类型。
System.Threading.Volatile.Write(Of [Enum])(MyEnumVar, value)