Generic C# Tutorial

using System; 
 
class NotFoundException : ApplicationException {} 
 
class UserID { 
  string name; 
  string number; 
 
  public UserID(string n, string num) { 
    name = n; 
    number = num; 
  } 
 
  public string Number { 
    get { return number; } 
    set { number = value; } 
  } 
 
  public string Name { 
    get { return name; } 
    set { name = value; } 
  } 

 
class Employee : UserID { 
  public Employee(string n, string num) : base(n, num) 
  { 
  } 

 
class Manager : UserID { 
  public Manager(string n, string num) : 
    base(n, num) { } 

 
class Guest { 

 
class IDList where T : UserID { 
  T[] userIDList; 
  int end; 
 
  public IDList() {  
    userIDList = new T[10]; 
    end = 0; 
  } 
 
  public bool add(T newEntry) { 
    if(end == 10) return false; 
 
    userIDList[end] = newEntry; 
    end++; 
 
    return true; 
  } 
 
  public T findByName(string name) { 
    for(int i=0; i      if(userIDList[i].Name == name)  
        return userIDList[i]; 
 
    } 
    throw new NotFoundException(); 
  } 
 
  public T findByNumber(string number) { 
 
    for(int i=0; i      if(userIDList[i].Number == number)  
        return userIDList[i]; 
    } 
    throw new NotFoundException(); 
  } 

 
class MainClass { 
  public static void Main() { 
    IDList plist = new IDList(); 
    plist.add(new Employee("T", "1")); 
    plist.add(new Employee("G", "6")); 
    plist.add(new Employee("M", "5")); 
 
    try { 
      Employee frnd = plist.findByName("T"); 
      Console.Write(frnd.Name + ": " + frnd.Number); 
    } catch(NotFoundException) { 
      Console.WriteLine("Not Found"); 
    } 
 
    Console.WriteLine(); 
 
    IDList plist2 = new IDList(); 
    plist2.add(new Manager("G", "8")); 
    plist2.add(new Manager("C", "9")); 
    plist2.add(new Manager("N", "2")); 
 
    try { 
      Manager sp = plist2.findByNumber("8"); 
      Console.WriteLine(sp.Name + ": " + sp.Number); 
    } catch(NotFoundException) { 
        Console.WriteLine("Not Found"); 
    } 
  } 
}
T: 1
G: 8