Tôi có hai lớpSử dụng từ khóa mới trong C#
class A
{
public virtual void Metod1()
{
Console.WriteLine("A.Method1");
}
}
class B : A
{
public new void Metod1()
{
Console.WriteLine("B.Method1");
}
}
Sau đó, tôi viết một số mã mà tuyên bố trường hợp của các lớp này, và gọi các phương thức của họ
static void Main(string[] args)
{
A a = new B();
a.Metod1();
B b = new B();
b.Metod1();
Console.ReadKey();
}
tôi đã cho sau kết quả:
A.Method1
B.Method1
Nhưng khi tôi xóa từ khóa mới từ phương thức chữ ký 1 của lớp B và chạy Phương thức chính, tôi nhận được kết quả tương tự. Câu hỏi: Từ khóa mới có phải là chữ ký của các phương thức chỉ để dễ đọc hơn không?
Chỉnh sửa: Có trường hợp nào chúng tôi không thể thực hiện mà không có từ khóa mới không?
bạn phải sử dụng ghi đè lên hoặc mới trong lớp B bacause nếu không nó ẩn phương pháp phần tử cha của .. mặc định là mới vì vậy nếu bạn sẽ không đặt mới nó mang lại cho bạn không lỗi và chạy tốt .. –
Lưu ý phụ: Cân nhắc "gây nhầm lẫn cho người đọc và người dùng mã" để sử dụng chính "mới" trong ngữ cảnh như vậy. Có những trường hợp khi sử dụng nó có thể cải thiện khả năng đọc (nghĩa là cần phải lấy được lớp cho một số lớp cơ sở không thân thiện), nhưng trong hầu hết các trường hợp, nó chỉ khó hiểu hơn khi phương thức của lớp cơ sở sẽ được gọi và khi có nguồn gốc. –