केवल प्रापक के साथ एक संपत्ति बनाना आपकी संपत्ति को केवल किसी भी कोड के लिए पढ़ता है जो कक्षा के बाहर है।
हालाँकि आप अपनी कक्षा द्वारा प्रदान की गई विधियों का उपयोग करके मूल्य बदल सकते हैं:
public class FuelConsumption {
private double fuel;
public double Fuel
{
get { return this.fuel; }
}
public void FillFuelTank(double amount)
{
this.fuel += amount;
}
}
public static void Main()
{
FuelConsumption f = new FuelConsumption();
double a;
a = f.Fuel; // Will work
f.Fuel = a; // Does not compile
f.FillFuelTank(10); // Value is changed from the method's code
}
अपनी कक्षा के निजी क्षेत्र को सेट करना जैसा readonlyकि आप केवल एक बार (इनलाइन असाइनमेंट का उपयोग करके या क्लास कंस्ट्रक्टर में) फ़ील्ड मान सेट करने की अनुमति देता है। आप इसे बाद में बदल नहीं पाएंगे।
public class ReadOnlyFields {
private readonly double a = 2.0;
private readonly double b;
public ReadOnlyFields()
{
this.b = 4.0;
}
}
readonly वर्ग फ़ील्ड का उपयोग अक्सर उन चरों के लिए किया जाता है, जिन्हें कक्षा के निर्माण के दौरान आरंभीकृत किया जाता है, और बाद में इन्हें कभी नहीं बदला जाएगा।
संक्षेप में, अगर आपको यह सुनिश्चित करने की आवश्यकता है कि आपकी संपत्ति का मूल्य कभी भी बाहर से नहीं बदला जाएगा, लेकिन आपको इसे अपने वर्ग कोड के अंदर से बदलने में सक्षम होना चाहिए, "गेट-ओनली" संपत्ति का उपयोग करें।
यदि आपको एक मूल्य संग्रहीत करने की आवश्यकता है जो एक बार अपने प्रारंभिक मूल्य को सेट करने के बाद कभी नहीं बदलेगा, तो एक readonlyफ़ील्ड का उपयोग करें ।
public double FuelConsumption => Fuel;