爲什麼,下面是合法的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