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);
}
}
Trình biên dịch không phàn nàn về trường hợp 2 (xem nhận xét), lý do chính là chuyển tiếp từ chuỗi thừa hưởng từ đối tượng. Dọc theo đường cùng, tại sao là nó phàn nàn với nhiều loại phương pháp vô danh (xem chú thích // trường hợp 4 :) rằngKhông thể chỉ định cho đại biểu một phương thức ẩn danh có loại thông số ít cụ thể hơn
thể không chuyển đổi phương pháp vô danh ủy gõ 'DelegateTest.Program.Srini' vì các loại tham số không khớp với các loại thông số ủy quyền
trong trường hợp phương pháp bình thường thì không? Hay tôi đang so sánh táo với cam? Một trường hợp khác là tại sao nó chấp nhận phương thức nặc danh mà không có tham số?
Rất tiếc, đó là lỗi chính tả, không có. Tôi đang đề cập đến // trường hợp 5 .i đã chỉnh sửa câu hỏi. –
@Srinivas: Ok, tôi đã chỉnh sửa câu trả lời một cách thích hợp. –