Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
518 views
in Technique[技术] by (71.8m points)

vb.net - Check if integer is valid bitwise enum value

is there a way to check if an integer is a valid value for an enum even if the value is bitwise?

Example:

  Public Enum eFlags As Integer
    None = 0
    First = 1
    Second = 2
    Third = 4
  End Enum

  Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    Dim x As eFlags = eFlags.Second Or eFlags.Third
    Dim y As Integer = 5

    Dim res = x.GetType.IsEnum AndAlso [Enum].IsDefined(x.GetType, y)
  End Sub

This returns false. I want to set the value of a property using reflection where the property is an enum and the value is integer...

question from:https://stackoverflow.com/questions/65897772/check-if-integer-is-valid-bitwise-enum-value

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Maybe this will help

<Flags> Public Enum eFlags As Integer
    None = 0
    First = 1
    Second = 2
    Third = 4

    'note: flags added above will have to be Or'ed in All
    All = First Or Second Or Third '<<<<<<<<<
End Enum

 Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Dim x As Integer = 14

        For y As Integer = 6 To 13
            Dim res As eFlags = CType(x And y, eFlags)

            If eFlags.All.HasFlag(res) Then
                Stop
            Else
                Stop
            End If
        Next
    End Sub

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

1.4m articles

1.4m replys

5 comments

56.9k users

...