C# đại biểu luôn luôn là khó khăn cho tôi để nắm bắt và vì vậy tôi đã rất vui khi vấp ngã trên logicchild's article on The Code Project web site titled "C# Delegates: Step by Step". Ông có một cách rất ngắn gọn giải thích C# đại biểu và tôi có thể giới thiệu nó cho bạn. Tuy nhiên, trong thử các ví dụ, tôi thấy rằng hai cách để khởi tạo một đại biểu, chủ yếu là:Cách "chính xác" để khởi tạo đại biểu C# là gì?
//create a new instance of the delegate class
CalculationHandler sumHandler1 = new CalculationHandler(math.Sum);
//invoke the delegate
int result = sumHandler1(8, 9);
Console.WriteLine("Result 1 is: " + result);
và
CalculationHandler sumHandler2 = math.Sum;
//invoke the delegate
int result = sumHandler2(8, 9);
Console.WriteLine("Result 2 is: " + result);
nơi lớp toán được định nghĩa là
public class Math
{
public int Sum(int x, int y)
{
return x + y;
}
}
Vì vậy, đó là cách "chính xác" và tại sao?
Whoa. Rất nhiều tội phạm được cam kết "Vì lợi ích của khả năng đọc", và nổi bật trong số đó là viết mã dài, phức tạp thay vì mã rõ ràng, súc tích. Điều đó ngược lại với khả năng đọc. –
vui vẻ Tôi sử dụng thứ hai để dễ đọc. Chỉ cần đi để cho thấy rằng khả năng đọc là chủ quan –
@Konrad, dài không tự động bằng cách phức tạp. Và ngắn không tự động có thể đọc được. RegEx đến với tâm trí ... Thực tế là cách "dài hơn" chặt chẽ hơn theo cách mọi thứ khác hoạt động trong C#. Cách ngắn hơn có khả năng gây nhầm lẫn. Tôi rất khó gọi CalculationHandler sumHandler1 = new CalculationHandler (math.Sum); một tội ác. – colithium