Visual Basic 2012 Voorbeelden
   

visual basic 2012 broncode voorbeelden

Blijf op de hoogte van de recente aanpassingen op vbvoorbeelden!

Microsoft Visual Studio 2012Microsoft Developers Network - Visual BasicMicrosoft .NET Framework

17.2. Enumeraties - FlagsAttribute

Print Email Deel op Twitter Deel op Facebook

Dit artikel is gepubliceerd op maandag 15 oktober 2012 op vbvoorbeelden, bezoek de website voor een recente versie van dit artikel of andere artikels.

Sommige enumeratiewaardes, zoals deze van onderstaande System.Drawing.FontStyle enumeratie, kan men zinnig combineren met de bitsgewijze Or operator :
Visual Basic 2012 Broncode - Codevoorbeeld 430
Imports System.Drawing
Public Class Form1
    Private Sub Form1_Paint(ByVal sender As Object, _
                            ByVal e As System.Windows.Forms.PaintEventArgs) _
                                                                Handles Me.Paint
        Dim fontFamily As FontFamily = fontFamily.GenericSansSerif
        Dim fontStyle As FontStyle = fontStyle.Bold Or fontStyle.Italic Or _
                                     fontStyle.Underline
        Dim font As New Font(fontFamily, 20, fontStyle)
        Dim brush As Brush = Brushes.Blue
        '
        e.Graphics.DrawString("hello world", font, brush, 10, 100)
    End Sub
End Class
Zo zal bovenstaand voorbeeld de tekst "hello world" bold, italic en underlined afdrukken.

Het <FlagsAttribute> dat wordt opgenomen in de definitie van een enumeratie geeft aan dat het zinnig is meerdere van de opties te combineren.

Dit is ook bij FontStyle het geval, de definitie ziet er ongeveer zo uit :
Visual Basic 2012 Broncode - Codevoorbeeld 431
<Flags()> Public Enum FontStyle
    Bold = 1
    Italic = 2
    Regular = 0
    Strikeout = 8
    Underline = 4
End Enum
Doorgaans gaat men in de identifier/naam van de enumeratie aan de hand van een meervoudsvorm aangeven dat hier zinnig meerdere opties combineerbaar zijn.  Hier is dat nu niet het geval, we hadden eerder iets als FontStyles in plaats van FontStyle verwacht.
Andere voorbeelden van enumeraties gemarkeerd met een <FlagsAttribute> zijn System.Diagnostics.TraceOptions en System.Text.RegularExpressions.RegexOptions.  Hier wordt wel een meervoudsvorm gebruikt in de naamgeving.

Door aan elke enumeratiewaarde een numerieke te waarde te koppelen die een macht van twee is, zorg je ervoor dat deze elk een bitrepresentatie hebben waar de positie van de enigste één aangeeft om welke optie het gaat.
Aan de hand van de bitsgewijze And operator kan men bijgevolg vrij eenvoudig nagaan welke van deze opties gecombineerd zijn :
Visual Basic 2012 Broncode - Codevoorbeeld 432
Public Class Example
    Public Shared Sub Main()
        PrintSomeEnumOptions(SomeEnum.Option1 Or SomeEnum.Option3)
        '
        Console.ReadLine()
    End Sub
    Public Shared Sub PrintSomeEnumOptions(ByVal s As SomeEnum)
        If (s And SomeEnum.Option1) = SomeEnum.Option1 Then _
                                  Console.WriteLine(SomeEnum.Option1.ToString())
        If (s And SomeEnum.Option2) = SomeEnum.Option2 Then _
                                  Console.WriteLine(SomeEnum.Option2.ToString())
        If (s And SomeEnum.Option3) = SomeEnum.Option3 Then _
                                  Console.WriteLine(SomeEnum.Option3.ToString())
    End Sub
End Class
Public Enum SomeEnum
    '             binair
    Option1 = 1 ' 001
    Option2 = 2 ' 010
    Option3 = 4 ' 100
End Enum
Console Application Output
Option1
Option3
Voor meer informatie over het gebruik van de bitsgewijze operatoren kan je het desbetreffende topic nog eens nalezen.

Dit artikel is gepubliceerd op maandag 15 oktober 2012 op vbvoorbeelden, bezoek de website voor een recente versie van dit artikel of andere artikels.