क्यों है यह है कि निम्न कानूनी सी # है:इंटरफेस करने संपत्ति की अनुमति दी है, लेकिन सार संपत्ति के लिए नहीं एक्सेसर जोड़ना
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
पूर्व की अनुमति देने के दौरान उत्तरार्द्ध को अस्वीकार करने का तर्क क्या है?
मुझे लगता है कि वे यहाँ शब्द "ओवरराइड" है। ओवरराइड करने के लिए कोई सेट विधि नहीं है। –
या यह है कि ओवरराइड कीवर्ड को एक्सेसर स्तर के बजाय संपत्ति स्तर पर निर्दिष्ट किया गया है? आखिरकार, प्रत्येक एक्सेसर एक अलग विधि है जब यह नीचे आता है। –
दायां - अमूर्त कीवर्ड संपत्ति स्तर पर काम करता है, न कि एक्सेसर स्तर। –