Tương tự như this, nhưng với một twist.Các tham số VB tùy chọn được yêu cầu trong C#
VB khai báo hàm:
Public Shared Function MyFunc(ByVal Name As String, ByVal Num As Integer, Optional ByRef obj As Object = Nothing, Optional ByVal val As Integer = 0) As Boolean
Khi gọi trong C# (giải pháp khác nhau, tôi sao chép trên các .dll
)
Lỗi 164 Không quá tải cho phương pháp 'MyFunc' mất 2 đối số
Siêu dữ liệu hiển thị chức năng là:
public static bool MyFunc(string Name, int Num, ref object obj, int val = 0);
Tại sao một người trong số này thực hiện khi người khác không?
Ra khỏi tò mò, tôi trao đổi thứ tự của hai tham số cuối cùng, C# dự án không có một vấn đề chấp nhận rằng, mặc dù siêu dữ liệu là 'public static bool MyFunc (tên chuỗi, int Num, int val = 0, đối tượng ref obj); 'là bất hợp pháp. Khi cố gắng truyền 2 tham số, tôi nhận được 'No overload ... nhận 2 tham số'. Khi cố gắng truyền 3 tham số, tôi nhận được 'No overload ... nhận 3 tham số'. Hấp dẫn. – JNF
@JNF: Siêu dữ liệu bạn đang hiển thị chỉ là biểu diễn C# * * của bất kỳ nội dung nào trong IL. Tôi nghi ngờ siêu dữ liệu thực sự cho phiên bản gốc cũng tốt - nó chỉ là bất cứ điều gì bạn đang sử dụng để dịch siêu dữ liệu đó vào C# không làm việc phải làm gì. Tôi sẽ không chỉ thay đổi thứ tự của các tham số mặc dù - nếu điều đó xảy ra để làm việc bây giờ, nó không đảm bảo rằng nó sẽ trong tương lai. Tôi muốn thay đổi chữ ký thành một cái gì đó mà cũng là đại diện trong C#. –
không, tốt, đó chỉ là tôi chơi Curious George. Tôi đã kết thúc quá tải trong VB. – JNF