string seizoen = "herfst";
...
if( seizoen == "hrefst" )
{
....
}
// lente = 0 , zomer = 1, herfst = 2, winter = 3
int seizoen = 0;
...
if( seizoen == 0 )
{
....
}
enum Seizoen { lente, zomer, herfst, winter }
...
namespace WpfEnum_Struct
{
enum Seizoen { lente, zomer, herfst, winter }
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
}
private void btnToonWinter_Click(object sender, RoutedEventArgs e)
{
Seizoen seizoen = Seizoen.winter;
int seizoengetal = (int)seizoen;
MessageBox.Show(String.Format("Seizoen nr. {0} is {1}"
,seizoengetal
,seizoen.ToString()));
}
}
}
enum Seizoen { lente = 1, zomer, herfst, winter }
enum Seizoen { lente, zomer, herfst, winter, spring = lente, summer = zomer, autumn = herfst }
In volgend voorbeeld doorlussen we de enumeratiemogelijkheden en plaatsen we deze in een ListBox, een aantal nieuwe code-elementen zoals het gebruik van een array en een foreach-lus die later uitvoeriger worden uitgelegd komen hier aan bod.
private void btnToonSeizoenen_Click(object sender, RoutedEventArgs e)
{
lstSeizoenen.Items.Clear();
foreach (string s in Enum.GetNames(typeof(Seizoen)))
{
lstSeizoenen.Items.Add(s);
}
}
Je kan een Button met de naam btnTest dus als volgt onzichtbaar maken:
btnTest.Visibility = Visibility.Hidden;
Rechtsklik je in Visual Studio het woord Visibility en kies je "Go to definition" dan kom je bij de definitie voor de eigenschap Visibility van een Button:
public Visibility Visibility { get; set; }
Wanneer je hier nu weer de definition opvraagt van de type-aanduiding Visibility, dan vind je de definitie van de enum Visibility:
namespace System.Windows
{
// Summary:
// Specifies the display state of an element.
public enum Visibility
{
// Summary:
// Display the element.
Visible = 0,
//
// Summary:
// Do not display the element, but reserve space for the element in layout.
Hidden = 1,
//
// Summary:
// Do not display the element, and do not reserve space for it in layout.
Collapsed = 2,
}
}
Soms is het goed een tussenvorm te gebruiken, meer mogelijkheden dan een enumeratie, maar toch niet de overhead van een klasse, waarbij communicatie is tussen stack en heap en acties intern dus omslachtiger en trager zijn.
Concreet wordt binnen .Net veel gebruik gemaakt van structures: int, long en float zijn eigenlijk niks anders dan verkorte schrijfwijzen voor de Structures System.Int32, System.Int64 en System.Single. Deze structures hebben fields en methods (zoals ToString()).
Een structure wordt voornamelijk gebruikt voor entiteiten die belangrijk zijn om hun waarde, zoals een getal, een tijd, een datum, ...
namespace WpfEnum_Struct
{
...
struct Tijd
{
public int uren, minuten, seconden;
public Tijd(int uu, int mm, int ss)
{
/* we verzekeren ons van een maximale grootte
* door de rest bij deling door de maximale waarde te berekenen
* zo wordt bv. 25 uur herleidt naar 1 uur */
uren = uu % 24;
minuten = mm % 60;
seconden = ss % 60;
}
public string ToonTijd()
{
return String.Format("{0}:{1}:{2}"
, TweeCijfersGewenst(uren)
, TweeCijfersGewenst(minuten)
, TweeCijfersGewenst(seconden));
}
private string TweeCijfersGewenst(int getal)
{
string getaltekst = getal.ToString();
if (getaltekst.Length < 2)
getaltekst = "0" + getaltekst;
return getaltekst;
}
}
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
}
...
private void btnToonTijd_Click(object sender, RoutedEventArgs e)
{
Tijd tijd = new Tijd(11,5,40);
MessageBox.Show("Tijd = " +tijd.ToonTijd());
}
}
}
Meer info over Structures en het verschil met klassen vind je in een artikel bij DevTips
| Meer tutorials: |
| leer ook: | html | | xhtml | | css | | asp | | asp.net | | c# | | ado.net | | linq | | ajax | | java | | javascript |