public class Program
{
delegate void Srini(string param);
static void Main(string[] args)
{
Srini sr = new Srini(PrintHello1);
sr += new Srini(PrintHello2); //case 2:
sr += new Srini(delegate(string o) { Console.WriteLine(o); });
sr += new Srini(delegate(object o) { Console.WriteLine(o.ToString()); }); //case 4:
sr += new Srini(delegate { Console.WriteLine(“This line is accepted,though the method signature is not Comp”); });//case 5
sr("Hello World");
Console.Read();
}
static void PrintHello1(string param)
{
Console.WriteLine(param);
}
static void PrintHello2(object param)
{
Console.WriteLine(param);
}
}
El compilador no se queja del caso 2 (ver el comentario), bueno, el motivo es directo ya que la cadena hereda del objeto. En la misma línea, ¿por qué se quejaba para este tipo de método anónimo (ver el comentario // 4 :) caso de queNo se puede asignar delegar un método anónimo con un tipo de parámetro menos específico
no puede convertir método anónimo para delegar tipo 'DelegateTest.Program.Srini' debido a que los tipos de parámetros no lo hacen coincide con los tipos de parámetro de delegado
donde como en el caso del método normal no es así? ¿O estoy comparando manzanas con naranjas? Otro caso es por qué está aceptando el método anónimo sin parámetros?
Vaya, jon, es un error tipográfico, no tiene. Me refiero a // caso 5. He editado la pregunta. –
@Srinivas: Bien, he editado la respuesta de manera apropiada. –