This page looks best with JavaScript enabled

C# y sobrecarga de métodos genéricos… un detallito

 ·  ☕ 1 min  ·  ✍️ eiximenis

Nota: Este post ha sido importado de mi blog de geeks.ms. Es posible que algo no se vea del todo "correctamente". En cualquier caso puedes acceder a la versión original aquí

A veces hay aspectos de C# que no pensamos hasta que nos encontramos con ellos… A mi me pasó con un código parecido a este:

class Program
{
    static void Main(string[] args)
    {
        Baz baz = new BazDerived();
        new Foo().Bar(baz);
        Console.ReadLine();
    }
}
class Foo
{
    public void Bar<T>(T t)
    {
        Console.WriteLine("Bar<T> typeof(T) = " + typeof(T).Name);
    }
    public void Bar(object o)
    {
        Console.WriteLine("Bar o.GetType() = " + o.GetType().Name);
    }
}
class Baz { }
class BazDerived : Baz { }

La pregunta seria: ¿cual es la salida por pantalla de este programa?

Pues… esta es la respuesta (para los que querais pensar un poco la he puesto en negro sobre negro… seleccionad el texto para verlo):

Bar typeof(T) = Baz

La verdad es que tiene toda su lógica… lo que personalmente no me gusta nada es que este código compile sin generar ningún warning. ¿Que opinais vosotros?

Saludos!!!

Si quieres, puedes invitarme a un café xD

eiximenis
ESCRITO POR
eiximenis
Compulsive Developer