|
Dit artikel is gepubliceerd op zondag 31 juli 2011 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 2010 Broncode 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 SubEnd ClassDownload Visual Basic 2010 Broncode Download Visual C# Sourcecode
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 2010 Broncode <Flags()> Public Enum FontStyle Bold = 1 Italic = 2 Regular = 0 Strikeout = 8 Underline = 4 End EnumDownload Visual Basic 2010 Broncode Download Visual C# Sourcecode
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 2010 Broncode 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 SubEnd ClassPublic Enum SomeEnum Option1 = 1 Option2 = 2 Option3 = 4 End EnumDownload Visual Basic 2010 Broncode Download Visual C# Sourcecode
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 zondag 31 juli 2011 op vbvoorbeelden, bezoek de website voor een recente versie van dit artikel of andere artikels.
|