/* A Programmer's Introduction to C# (Second Edition) by Eric Gunnerson Publisher: Apress L.P. ISBN: 1-893115-62-3 */ // 20 - EnumerationsThe System.Enum Type // copyright 2000 Eric Gunnerson using System; enum Color { red, green, yellow } public class TheSystemEnumType2 { public static void Main() { Color c = Color.red; // enum values and names foreach (int i in Enum.GetValues(c.GetType())) { Console.WriteLine("Value: {0} ({1})", i, Enum.GetName(c.GetType(), i)); } // or just the names foreach (string s in Enum.GetNames(c.GetType())) { Console.WriteLine("Name: {0}", s); } // enum value from a string, ignore case c = (Color) Enum.Parse(typeof(Color), "Red", true); Console.WriteLine("string value is: {0}", c); // see if a specific value is a defined enum member bool defined = Enum.IsDefined(typeof(Color), 5); Console.WriteLine("5 is a defined value for Color: {0}", defined); } }
Data Types
Enumerations:The System.Enum Type
using System; enum Color { red, green, yellow } public class TheSystemEnumType1 { public static void Main() { Color c = Color.red; Console.WriteLine("c is {0}", c); } }
Enumerations:Bit Flag Enums 2
enum Values { A = 1, B = 5, C = 3, D = 42 } public class EnumerationsConversions { public static void Main() { Values v = (Values) 2; int ival = (int) v; } }
Enumerations:Bit Flag Enums 1
using System; [Flags] public enum BitValues: uint { NoBits = 0, Bit1 = 0x00000001, Bit2 = 0x00000002, Bit3 = 0x00000004, Bit4 = 0x00000008, Bit5 = 0x00000010, AllBits = 0xFFFFFFFF } public class BitFlagEnums { public static void Member(BitValues value) { // do some processing here } public static void Main() { Member(BitValues.Bit1 | BitValues.Bit2); } }
Enumerators and Foreach
/* A Programmer's Introduction to C# (Second Edition) by Eric Gunnerson Publisher: Apress L.P. ISBN: 1-893115-62-3 */ // 19 - Indexers and EnumeratorsEnumerators and Foreach // copyright 2000 Eric Gunnerson using System; using System.Collections; // Note: This class is not thread-safe class IntList: IEnumerable { int[] values = new int[10]; int allocated = 10; int count = 0; int revision = 0; public void Add(int value) { // reallocate if necessary if (count + 1 == allocated) { int[] newValues = new int[allocated * 2]; for (int index = 0; index < count; index++) { newValues[index] = values[index]; } allocated *= 2; } values[count] = value; count++; revision++; } public int Count { get { return(count); } } void CheckIndex(int index) { if (index >= count) throw new ArgumentOutOfRangeException("Index value out of range"); } public int this[int index] { get { CheckIndex(index); return(values[index]); } set { CheckIndex(index); values[index] = value; revision++; } } public IEnumerator GetEnumerator() { return(new IntListEnumerator(this)); } internal int Revision { get { return(revision); } } } class IntListEnumerator: IEnumerator { IntList intList; int revision; int index; internal IntListEnumerator(IntList intList) { this.intList = intList; Reset(); } public bool MoveNext() { index++; if (index >= intList.Count) return(false); else return(true); } public object Current { get { if (revision != intList.Revision) throw new InvalidOperationException("Collection modified while enumerating."); return(intList[index]); } } public void Reset() { index = -1; revision = intList.Revision; } } public class EnumeratorsandForeach { public static void Main() { IntList list = new IntList(); list.Add(1); list.Add(55); list.Add(43); foreach (int value in list) { Console.WriteLine("Value = {0}", value); } foreach (int value in list) { Console.WriteLine("Value = {0}", value); list.Add(124); } } }
Demonstrate IDictionaryEnumerator
/* C#: The Complete Reference by Herbert Schildt Publisher: Osborne/McGraw-Hill (March 8, 2002) ISBN: 0072134852 */ // Demonstrate IDictionaryEnumerator. using System; using System.Collections; public class IDicEnumDemo { public static void Main() { // Create a hash table. Hashtable ht = new Hashtable(); // Add elements to the table ht.Add("Tom", "555-3456"); ht.Add("Mary", "555-9876"); ht.Add("Todd", "555-3452"); ht.Add("Ken", "555-7756"); // Demonstrate enumerator IDictionaryEnumerator etr = ht.GetEnumerator(); Console.WriteLine("Display info using through Entry."); while(etr.MoveNext()) Console.WriteLine(etr.Entry.Key + ": " + etr.Entry.Value); Console.WriteLine(); Console.WriteLine("Display info using Key and Value directly."); etr.Reset(); while(etr.MoveNext()) Console.WriteLine(etr.Key + ": " + etr.Value); } }
Demonstrate an enumerator
/*
C#: The Complete Reference
by Herbert Schildt
Publisher: Osborne/McGraw-Hill (March 8, 2002)
ISBN: 0072134852
*/
// Demonstrate an enumerator.
using System;
using System.Collections;
public class EnumeratorDemo {
public static void Main() {
ArrayList list = new ArrayList(1);
for(int i=0; i < 10; i++) list.Add(i); // Use enumerator to access list. IEnumerator etr = list.GetEnumerator(); while(etr.MoveNext()) Console.Write(etr.Current + " "); Console.WriteLine(); // Re-enumerate the list. etr.Reset(); while(etr.MoveNext()) Console.Write(etr.Current + " "); Console.WriteLine(); } } [/csharp]