Home   Cover Cover Cover Cover
 

Collections

Beispiel "Comparer"

Beispiel zur Implementierung eines Comparer-Objekts, das Zeichenketten nach ihrer Länge sortiert.
Somit würde sich für den Array {"Birngruber", "Wöß", "Mössenböck", "Beer"} folgende Sortierung auf der Konsole ergeben:

../../../samples/4/Collections/Comparer.cs
using System;
using System.Collections;

namespace Kapitel4.Collections {

  public class StringLengthComparer : IComparer {
    public int Compare(object obj1, object obj2) {
      // eine null-Referenz gilt laut Microsoft Dokumentation immer als kleinstes Element
      if(obj1==null && obj2==null) return 0;
      if(obj1==null) return -1;
      if(obj2==null) return 1;
      if(obj1.ToString().Length == obj2.ToString().Length) return 0;
      if(obj1.ToString().Length < obj2.ToString().Length) return -1;
      return 1;
    }
  }

  public class TestComparer {
    public static void Main(string[] argv) {
      string[] a = {"Birngruber", "W��", "M�ssenb�ck", "Beer"};
      Array.Sort(a, new StringLengthComparer());
      foreach(string s in a) Console.WriteLine("{0}", s);
    }
  }
}

Beispiel "Hashtable"

Im folgenden Beispiel werden Personen in eine Hashtabelle eingefügt, wobei die Sozialversicherungsnummer als Schlüssel verwendet wird.
Bei der Suche nach der Person mit der Sozialversicherungsnummer "1245010770" ergibt sich folgende Ausgabe auf der Konsole:

../../../samples/4/Collections/Hashtable.cs
using System;
using System.Collections;

namespace Kapitel4.Collections {

  public class Person {
    string lastName;
    string firstName;
  
    public Person(string firstName, string lastName) {
      this.firstName = firstName;
      this.lastName = lastName;
    }

    public override string ToString() {
      return firstName + " " + lastName;
    }
  }

  public class HashtableExample {    
    public static void Main() {
      Hashtable tab = new Hashtable();
      tab.Add(3181030750, new Person("Mike", "Miller"));
      tab.Add(1245010770, new Person("Susanne", "Parker"));
      tab.Add(2345020588, new Person("Roland", "Howard"));
      tab.Add(1245300881, new Person("Douglas", "Adams"));
      foreach (DictionaryEntry e in tab)
        Console.WriteLine(e.Value + ": " + e.Key);
      if (tab.Contains(1245010770))
        Console.WriteLine("Person mit SNr. 1245010770: " + tab[1245010770]);
    }
  }
}