public static void Main()
comparador<string> c = Menor;
comparador isPlural = Plural;
Console.WriteLine(Teste(2,isPlural));
public delegate bool comparador<T>(T a ,T b ) where T : IComparable<T>;
public delegate bool comparador(int a);
public static bool Maior<T> ( T a, T b ) where T : IComparable<T>
return a.CompareTo(b) > 0 ;
public static bool Igual<T> ( T a, T b ) where T : IComparable<T>
return a.CompareTo(b) == 0 ;
public static bool Menor<T> ( T a, T b ) where T : IComparable<T>
return a.CompareTo(b) < 0 ;
public static bool Plural<T>(T a)
public static string Teste<T>(T n1, T n2, comparador<T> c ) where T : IComparable<T>{
return c(n1, n2) ? "ok" : "não ok";
public static string Teste(int n1, comparador c )
return c(n1) ? "ok" : "não ok";