为什么,下面是合法的C#:添加访问接口属性允许的,但不是抽象属性
public interface ISomeInterface
{
int SomeProperty
{
get;
}
}
public class SomeClassImplementingInterface : ISomeInterface
{
public int SomeProperty
{
get { return 32; }
protected set {}
}
}
但这不是:
public abstract class SomeAbstractClass
{
public abstract int SomeProperty
{
get;
}
}
public class SomeClassExtendingAbstractClass : SomeAbstractClass
{
public override int SomeProperty
{
get { return 32; }
protected set {}
}
}
在以下后者结果编译时错误:
'InterfaceAbstractTest.SomeClassExtendingAbstractClass.SomeProperty.set': cannot override because 'InterfaceAbstractTest.SomeAbstractClass.SomeProperty' does not have an overridable set accessor InterfaceAbstractTest
在允许前者的同时不禁止后者的原因是什么?
我认为他们在这里的话是“覆盖”。没有设置的方法来覆盖。 – 2012-02-20 17:00:30
或者,是否在属性级别而不是访问者级别指定了override关键字?毕竟,每个访问者在涉及它时都是一个独特的方法。 – 2012-02-20 17:02:40
右键 - 抽象关键字在属性级别,而不是访问者级别。 – 2012-02-20 17:04:51