Howto Generics

This sample shows how to use a parametrized types over a class

//compile with gmcs sample.cs /out:generics.exe
 
using System;
 
public class Generics<T> {
 
    T obj;
 
    public Generics (T o)
    {
         obj = o;
    } 
 
    public T GetObj ()
    {
        return obj;
    } 
 
    public void ShowType ()
    {
        Console.WriteLine("T type is:" + typeof(T));
    }
}
 
public class TestGenerics {
 
    public static void Main(string[] args)
    {
         int integer_value;
         string string_value;
 
         //check for some command line arguments
         if(args.Length == 0) 
             Console.WriteLine("Usage: mono generics.exe integer string");
         else {
 
             //apply to integer argument/type          
             Generics<int> integer_obj = new Generics<int>(int.Parse(args[0]));
             integer_obj.ShowType();
             integer_value = integer_obj.GetObj();
             Console.WriteLine("value:" + integer_value);
 
             Console.WriteLine("----------------------");
 
             //apply to string argument/type
             Generics<string> string_obj = new Generics<string>(args[1]);
             string_obj.ShowType();
             string_value = string_obj.GetObj();
             Console.WriteLine("value:" + string_value); 
         }         
    }
}