Tại sao nó rằng sau là hợp pháp C#:Thêm accessor để giao tài sản cho phép, nhưng không phải để sở hữu trừu tượng
public interface ISomeInterface
{
int SomeProperty
{
get;
}
}
public class SomeClassImplementingInterface : ISomeInterface
{
public int SomeProperty
{
get { return 32; }
protected set {}
}
}
nhưng đây không phải là:
public abstract class SomeAbstractClass
{
public abstract int SomeProperty
{
get;
}
}
public class SomeClassExtendingAbstractClass : SomeAbstractClass
{
public override int SomeProperty
{
get { return 32; }
protected set {}
}
}
Kết quả thứ hai trong những điều sau đây lỗi biên dịch thời gian:
'InterfaceAbstractTest.SomeClassExtendingAbstractClass.SomeProperty.set': cannot override because 'InterfaceAbstractTest.SomeAbstractClass.SomeProperty' does not have an overridable set accessor InterfaceAbstractTest
Lý do không cho phép sau này trong khi cho phép trước?
Tôi nghĩ rằng chúng từ kay ở đây là "ghi đè". Không có phương pháp nào được đặt để ghi đè. –
Hoặc là từ khóa ghi đè được chỉ định ở cấp thuộc tính chứ không phải cấp độ truy cập? Sau khi tất cả, mỗi accessor là một phương pháp riêng biệt khi nó đi xuống với nó. –
Quyền - từ khóa trừu tượng hoạt động ở cấp thuộc tính, không phải cấp độ truy cập. –