Trước tiên, tôi đã đọc một số diễn đàn và trợ giúp trong MSDN và tất cả đều nói rằng một đại biểu không thể bị quá tải.C# - Làm thế nào tôi có thể "quá tải" một đại biểu?
Bây giờ, tôi muốn có một cái gì đó như thế này:
public delegate void OneDelegate();
public delegate void OneDelegate(params object[] a);
public void DoNothing(params object[] a) {}
public void DoSomething() { /* do something */ }
private OneDelegate someFunction;
someFunction = new OneDelegate(DoSomething);
someFunction = new OneDelegate(DoNothing);
Vì vậy, như bạn biết, bạn KHÔNG THỂ làm được điều này, bởi vì OneDelegate chỉ đề cập đến một trong những đầu tiên và không phải là người thứ hai. Nhưng, có cách nào để làm điều này không? hay đại loại thế?
PS1: Tôi không có bất kỳ số lượng khai báo OneDelegate nào, không chỉ một hoặc hai.
PS2: Xin lỗi vì tiếng Anh xấu của tôi.
Gần nhất bạn có thể nhận được là quá tải bằng cách sử dụng generics, chính xác như tất cả các hành động quá tải <> và Func <>. (Trong đó các đối số chung đại diện cho các kiểu tham số và kiểu trả về.) Tất nhiên, một khi bạn đi xa như vậy, nó đặt ra câu hỏi tại sao không chỉ sử dụng Action <> và Func <> ngay từ đầu? –
Tôi muốn chỉ có MỘT LOẠI chức năng này để tôi có thể nói "Này, ở đây bạn có một chức năng, gọi nó!". Và tôi không thể làm điều đó với Action <> AND Func <>. –