VB.NET在Enum var类型上使用System.Threading.Volatile.Write

时间:2014-07-30 11:51:20

标签: vb.net enums volatile

我需要对从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必须是类类型。

那么我怎样才能达到目的呢?

感谢。

1 个答案:

答案 0 :(得分:1)

您可以使用Write(Of T)重载TEnum的类型。

System.Threading.Volatile.Write(Of [Enum])(MyEnumVar, value)