Explain to me the logic why I get compilation error in case 3 ?
All of these types derive from Object. What is the problem then?
public delegate object DelegateType();
public static void Main()
{
    DelegateType case1 = Test;
    DelegateType case2 = Test2;
    DelegateType case3 = Test3;
}
public static string Test()
{
    return 1.ToString();
}
public static ValueType Test2()
{
    return 1;
}
public static int Test3()
{
    return 1;
}