কেবলমাত্র একজন গেটারের সাথে সম্পত্তি তৈরি করা আপনার শ্রেণীর বাইরে থাকা কোনও কোডের জন্য আপনার সম্পত্তি কেবল পঠনযোগ্য করে তোলে।
তবে আপনি আপনার শ্রেণীর সরবরাহিত পদ্ধতিগুলি ব্যবহার করে মানটি পরিবর্তন করতে পারেন:
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;