Tôi đã gặp phải vài lần trong tuần trước và tôi tò mò muốn biết lý do - tôi có một google, nhưng không thể tìm thấy bất kỳ điều gì có liên quan trực tiếp.Phương thức quá tải tĩnh + Lỗi động
Tôi có một lớp học với một phương pháp năng động, và tôi có thể thêm một phương pháp tĩnh với cùng một giao diện:
public class MyClass
{
public int MyMethod()
{
//do something #1;
}
public static int MyMethod()
{
//do something
}
}
này là tốt, nhưng nếu tôi cố gắng gọi phương thức tĩnh từ phương pháp năng động, thay thế # 1 bằng return MyClass.MyMethod()
, tôi gặp lỗi "Cuộc gọi không rõ ràng giữa các phương thức hoặc thuộc tính sau: MyClass.MyMethod() và MyClass.MyMethod().
Nếu phương pháp tĩnh bị xóa, lỗi sẽ thay đổi thành" Một đối tượng tham chiếu là bắt buộc .. ", có ý nghĩa.
Vậy tại sao ambigu này ous? Nó đã được bắt đầu với tên lớp để chỉ định phương thức tĩnh, hoạt động từ bất kỳ nơi nào khác trong mã.
Tại sao không có ở đây?
EDIT: Tôi đã không thực sự cố gắng biên dịch nó mà không có phương pháp động gọi là tĩnh, tôi đã chỉ đi bởi VS không gạch dưới nó.
Nhưng vẫn còn là một câu hỏi tương tự Tôi cho rằng nhưng với một thêm "Tại sao không thể có được cả hai, như một là tĩnh, và người ta không"
Mã được cung cấp có biên dịch cho bạn không? Nó ném lỗi CS0111 cho tôi (đã định nghĩa một thành viên được gọi là 'MyMethod' với các kiểu tham số tương tự). – prashanth
Đó là một thông báo lỗi sai (không chính xác), nhưng có lẽ chỉ vì thứ tự mà trình biên dịch cố gắng giải quyết và xác minh tham chiếu. – McGarnagle
@prashanth Bạn đúng. Tôi đã thực hiện một giả định - xem chỉnh sửa. – 3Pi