तक पहुंचने पर मैंने हाल ही में सी # प्रश्नों के साथ एक साक्षात्कार किया था। उनमें से एक मुझे जवाब नहीं मिल रहा है।एक साक्षात्कार पहेली: एक निजी डेटा सदस्य
मैं एक वर्ग दिया गया था, इस तरह दिखता है:
public class Stick
{
private int m_iLength;
public int Length
{
get
{
return m_iLength;
}
set
{
if (value > 0)
{
m_iLength = value;
}
}
}
}
इसके अलावा, एक मुख्य वर्ग में दिया गया था
static void Main(string[] args)
{
Stick stick = new Stick();
}
कार्य मुख्य करने के लिए कोड जोड़ने के लिए है कि में m_iLength
कारण होगा था चिपकने वाला वर्ग नकारात्मक होना चाहिए (और यह जोर दिया गया था कि यह किया जा सकता है)।
मुझे कुछ याद आ रहा है। डेटा सदस्य निजी है, और जहां तक मुझे पता है कि प्राप्त करें और सेट फ़ंक्शन टाइप int के लिए मूल्य से हैं, इसलिए मुझे नहीं पता कि यह कैसे किया जा सकता है।
प्रतिबिंब शायद? – slawekwin
उदाहरण: http://stackoverflow.com/questions/10862747/access-private-fields – bobah75
@ सीसे में सी # आप क्लास सदस्यों को ओवरराइड नहीं कर सकते हैं जब तक उन्हें "आभासी" घोषित नहीं किया जाता है (उदाहरण के लिए जावा के विपरीत)। प्रतिबिंब एकमात्र तरीका है जिसे मैं देख सकता हूं (अंतर्निहित आईएल को संशोधित करने के लिए, या स्मृति बैकिंग iLength को संशोधित करने के लिए असुरक्षित कोड का उपयोग करना - यह भी सुनिश्चित नहीं है कि वह अंतिम संभव है या नहीं!) –