সি # তে const
এবং পার্থক্য কী readonly
?
আপনি কখন অন্যটির উপরে ব্যবহার করবেন?
সি # তে const
এবং পার্থক্য কী readonly
?
আপনি কখন অন্যটির উপরে ব্যবহার করবেন?
উত্তর:
এর আপাত পার্থক্য ছাড়াও
const
ভিএস readonly
মানগুলির সংজ্ঞা দেওয়ার সময় মানটি ঘোষণার সাথে সাথে গতিশীলভাবে গণনা করা যায় তবে কনস্ট্রাক্টরটি প্রস্থান করার আগে নির্ধারিত হওয়া দরকার ... তারপরে এটি হিমায়িত হয়।static
। আপনি ClassName.ConstantName
এগুলি অ্যাক্সেস করতে একটি স্বরলিপি ব্যবহার করুন।একটি সূক্ষ্ম পার্থক্য আছে। একটি শ্রেণীর মধ্যে সংজ্ঞায়িত বিবেচনা করুন AssemblyA
।
public class Const_V_Readonly
{
public const int I_CONST_VALUE = 2;
public readonly int I_RO_VALUE;
public Const_V_Readonly()
{
I_RO_VALUE = 3;
}
}
AssemblyB
রেফারেন্স AssemblyA
এবং কোড এই মান ব্যবহার করে। যখন এটি সংকলিত হয়,
const
মানটির ক্ষেত্রে এটি অনুসন্ধান-প্রতিস্থাপনের মতো, মান 2 এর 'আইএল'তে বেকড হয় AssemblyB
। এর অর্থ হ'ল আগামীকাল যদি আমি I_CONST_VALUE
ভবিষ্যতে 20 এ আপডেট করব । AssemblyB
আমি এটি পুনরায় সংশোধন না করা পর্যন্ত এখনও 2 থাকবে ।readonly
মানটির ক্ষেত্রে এটি ref
একটি স্মৃতি অবস্থানের মতো is মানটি AssemblyB
এর আইএল বেকড হয় না । এর অর্থ হ'ল মেমরির অবস্থানটি আপডেট করা AssemblyB
হলে পুনঃসংশোধন ছাড়াই নতুন মান পায়। সুতরাং যদি I_RO_VALUE
30 এ আপডেট হয় তবে আপনাকে কেবল তৈরি করতে হবে AssemblyA
। সমস্ত ক্লায়েন্টদের পুনরায় সংযুক্ত করার দরকার নেই।সুতরাং আপনি যদি আত্মবিশ্বাসী হন যে ধ্রুবকের মান ব্যবহার করে না const
।
public const int CM_IN_A_METER = 100;
তবে আপনার যদি এমন একটি ধ্রুবক থাকে যা পরিবর্তিত হতে পারে (যেমন: যথার্থতা) .. বা সন্দেহ হলে, এ ব্যবহার করুন readonly
।
public readonly float PI = 3.14;
আপডেট: আকুর একটি উল্লেখ কোজ পাওয়া দরকার যা তিনি প্রথমে এটি নির্দেশ করেছিলেন। আমি যেখানে শিখেছি সেখানে প্লাগ করতে হবে .. কার্যকর সি # - বিল ওয়াগনার
static
- বিন্দু সবচেয়ে গুরুত্বপূর্ণ এবং দরকারী বিন্দু হবে বলে মনে হয়consts are implicitly static
readonly
ভেরিয়েবলগুলি কনস্ট্রাক্টরের (প্রতিবিম্ব) বাইরে পরিবর্তন করা যেতে পারে। এটি কেবলমাত্র সংকলক যা আপনাকে কনস্ট্রাক্টরের বাইরে ভেরি পরিবর্তন করতে বাধা দেওয়ার চেষ্টা করে।
readonly
ভেরিয়েবলগুলি একবার প্রতিস্থাপনের মাধ্যমেও কনস্ট্রাক্টর শেষ হয়ে গেলে তার পরিবর্তন করার অনুমতি নেই। রানটাইম এটি প্রয়োগ না করার জন্য ঘটে। রানটাইমটি এমন পরিবর্তনও ঘটায় যাতে আপনি পরিবর্তন করেন string.Empty
না "Hello, world!"
, তবে আমি এখনও দাবি করব না যে এটি string.Empty
পরিবর্তনযোগ্য করে তোলে , বা সেই কোডটি ধরে নেওয়া উচিত নয় যে string.Empty
সর্বদা শূন্য দৈর্ঘ্যের স্ট্রিং হবে।
কনস্টেট সহ একটি গেটচা আছে! আপনি যদি অন্য কোনও সমাবেশ থেকে কোনও ধ্রুবক উল্লেখ করেন তবে এর মানটি কলিং অ্যাসেমব্লিতে ঠিকই সংকলিত হবে। আপনি যখন রেফারেন্সড অ্যাসেমব্লিতে ধ্রুবক আপডেট করেন তখন কলিং অ্যাসেমব্লিতে এটি পরিবর্তন হবে না!
কেবল যুক্ত করার জন্য, কেবলমাত্র রেফারেন্স কেবলমাত্র রেফারেন্সের জন্য রেফারেন্সটি কেবল পাঠ্যই মানগুলিকে নয়। উদাহরণ স্বরূপ:
public class Const_V_Readonly
{
public const int I_CONST_VALUE = 2;
public readonly char[] I_RO_VALUE = new Char[]{'a', 'b', 'c'};
public UpdateReadonly()
{
I_RO_VALUE[0] = 'V'; //perfectly legal and will update the value
I_RO_VALUE = new char[]{'V'}; //will cause compiler error
}
}
string
ধ্রুবক হিসাবে ব্যবহার করতে পারেন যে ছাড়া অন্য কোন রেফারেন্স টাইপ আছে ?
const
স্ট্রিং ব্যতীত রেফারেন্স প্রকারের সাথে থাকতে পারে তবে ধ্রুবকের কেবল মান থাকতে পারে null
।
এটি এটি ব্যাখ্যা করে । সংক্ষিপ্ত বিবরণ: কনস্ট্রাকশন অবশ্যই ঘোষণার সময় শুরু করা উচিত, কেবলমাত্র কনস্ট্রাক্টরের উপর আরম্ভ করা যেতে পারে (এবং ব্যবহারকারীর উপর নির্ভর করে আলাদা মান থাকতে পারে)।
সম্পাদনা: সূক্ষ্ম পার্থক্যের জন্য উপরে গিশুর গোটচা দেখুন
কেবলমাত্র পঠনযোগ্য একটি ছোট গোটচা আছে। একটি পঠনক্ষেত্র ক্ষেত্রটি কনস্ট্রাক্টরের মধ্যে একাধিকবার সেট করা যায়। এমনকি মান দুটি পৃথক শৃঙ্খলযুক্ত নির্মাত্রে সেট করা থাকলেও এটি অনুমোদিত।
public class Sample {
private readonly string ro;
public Sample() {
ro = "set";
}
public Sample(string value) : this() {
ro = value; // this works even though it was set in the no-arg ctor
}
}
একটি স্থির সদস্য সংকলন সময়ে সংজ্ঞায়িত করা হয় এবং রানটাইম এ পরিবর্তন করা যায় না। ধ্রুবকগুলি const
কীওয়ার্ড ব্যবহার করে একটি ক্ষেত্র হিসাবে ঘোষিত হয় এবং তাদের ঘোষণার সাথে সাথে অবশ্যই শুরু করতে হবে।
public class MyClass
{
public const double PI1 = 3.14159;
}
একটি readonly
সদস্য স্থির মতো যে এটি একটি অপরিবর্তনীয় মান উপস্থাপন করে। পার্থক্যটি হ'ল কোনও readonly
সদস্য রানটাইমের সময়, কনস্ট্রাক্টারে আরম্ভ করা যেতে পারে, পাশাপাশি তারা ঘোষণার সাথে সাথে আরম্ভ করাতে সক্ষম হয়।
public class MyClass1
{
public readonly double PI2 = 3.14159;
//or
public readonly double PI3;
public MyClass2()
{
PI3 = 3.14159;
}
}
const
static
(এগুলি স্পষ্টতই স্থির)শুধুমাত্র পাঠযোগ্য
static const int i = 0;
const
করতে পারেন কেন অভ্যন্তরীণ পদ্ধতিতে ঘোষণা করা যায় না?
একটি কনস্ট একটি সংকলন-সময় ধ্রুবক যেখানে পঠনযোগ্যভাবে রান-টাইমে একটি মান গণনা এবং কনস্ট্রাক্টর বা ফিল্ড ইনিশিয়ালাইজারে সেট করতে দেয়। সুতরাং, একটি 'কনস্ট' সর্বদা ধ্রুবক তবে কেবলমাত্র নিয়োগের পরে কেবল 'পঠনযোগ্য' কেবল পঠনযোগ্য।
সি # টিমের এরিক লিপার্টের বিভিন্ন ধরণের অপরিবর্তনীয়তা সম্পর্কে আরও তথ্য রয়েছে
এখানে অন্য লিঙ্কটি দেখানো হচ্ছে যে কনস্ট্যান্ট কীভাবে সংস্করণ নিরাপদ নয়, বা রেফারেন্স ধরণের জন্য প্রাসঙ্গিক।
সংক্ষিপ্তসার :
কেবলমাত্র পঠনযোগ্য : রানটাইমের সময় কর্টারের মাধ্যমে মান পরিবর্তন করা যায়। তবে সদস্য ফাংশনের মাধ্যমে নয়
ধ্রুবক : স্থির স্থির দ্বারা। মান কোথাও থেকে পরিবর্তন করা যায় না (কর্টর, ফাংশন, রানটাইম ইত্যাদি কোন জায়গায় নেই)
তবুও আরেকটি গোচা: পঠনযোগ্য মানগুলি প্রতিবিম্বের মাধ্যমে "বোকা" কোড দ্বারা পরিবর্তন করা যেতে পারে।
var fi = this.GetType()
.BaseType
.GetField("_someField",
BindingFlags.Instance | BindingFlags.NonPublic);
fi.SetValue(this, 1);
প্রতিবিম্ব ব্যবহার করে আমি কি সি # তে একটি ব্যক্তিগত পঠনযোগ্য উত্তরাধিকার সূত্রে পরিবর্তন করতে পারি?
আমি বিশ্বাস করি একটি const
মান সমস্ত বস্তুর জন্য সমান (এবং এটি অবশ্যই আক্ষরিক প্রকাশের সাথে আরম্ভ করা উচিত), যেখানে readonly
প্রতিটি ইনস্ট্যান্টেশনের জন্য আলাদা হতে পারে ...
আমাদের অফিসে দলের একজন সদস্য কন্সট, স্থিতিশীল এবং কেবলমাত্র পড়ার জন্য নিম্নলিখিত নির্দেশিকাটি সরবরাহ করেছিলেন:
একটি চূড়ান্ত নোট: একটি দৃ const় ক্ষেত্র স্থির, কিন্তু বিপরীতটি সত্য নয়।
এগুলি উভয়ই ধ্রুবক, তবে সংকলনের সময় একটি কনস্টও পাওয়া যায়। এর অর্থ হ'ল পার্থক্যের একটি দিক হ'ল আপনি কনস্ট্রিট কনস্ট্রাক্টরগুলিকে ইনপুট হিসাবে কনস্ট ভেরিয়েবল ব্যবহার করতে পারেন, তবে পঠনযোগ্য ভেরিয়েবলগুলি নয়।
উদাহরণ:
public static class Text {
public const string ConstDescription = "This can be used.";
public readonly static string ReadonlyDescription = "Cannot be used.";
}
public class Foo
{
[Description(Text.ConstDescription)]
public int BarThatBuilds {
{ get; set; }
}
[Description(Text.ReadOnlyDescription)]
public int BarThatDoesNotBuild {
{ get; set; }
}
}
কখন ব্যবহার করবেন const
বাreadonly
const
readonly
App.config
, তবে একবার এটি আরম্ভ করলে এটি পরিবর্তন করা যায় নাভেরিয়েবলগুলি চিহ্নিত কনস্টটি শক্তভাবে টাইপ করা # ডেফাইন ম্যাক্রোগুলির চেয়ে সামান্য কিছু, সংকলন সময় কনস্টে কনটেস্ট ভেরিয়েবলের রেফারেন্সগুলি ইনলাইন আক্ষরিক মানগুলির সাথে প্রতিস্থাপন করা হয়। ফলস্বরূপ কেবল নির্দিষ্ট বিল্ট-ইন আদিম মান প্রকারগুলি এইভাবে ব্যবহার করা যেতে পারে। কেবলমাত্র পঠনযোগ্য হিসাবে চিহ্নিত ভেরিয়েবলগুলি রান-টাইমে কনস্ট্রাক্টারে সেট করা যেতে পারে এবং রান-টাইমের সময় তাদের কেবল-পঠনযোগ্য নেস প্রয়োগ করা হয়। এর সাথে কিছু গৌণ পারফরম্যান্স ব্যয় যুক্ত রয়েছে তবে এর অর্থ আপনি কোনও ধরণের (এমনকি রেফারেন্স প্রকারের) সাথে কেবল পঠনযোগ্য ব্যবহার করতে পারেন।
এছাড়াও, কনস্টের ভেরিয়েবলগুলি অন্তর্নিহিত স্থিতিশীল, যেখানে পঠনযোগ্য ভেরিয়েবলগুলি ইচ্ছা করলে নির্দিষ্টভাবে নির্দিষ্ট হতে পারে।
আরেকটা গোচা ।
যেহেতু কনস্টটি কেবলমাত্র বেসিক ডেটা ধরণের সাথে কাজ করে, আপনি যদি কোনও ক্লাসের সাথে কাজ করতে চান তবে আপনি কেবলমাত্র বাধ্য হয়ে পড়তে পারেন "পঠনযোগ্য" ব্যবহার করতে। তবে, ফাঁদ থেকে সাবধান! কেবলমাত্র পঠনের অর্থ হ'ল আপনি অন্য কোনও বস্তুর সাথে অবজেক্টটি প্রতিস্থাপন করতে পারবেন না (আপনি এটি অন্য কোনও বস্তুর সাথে উল্লেখ করতে পারবেন না)। তবে যে কোনও প্রক্রিয়াতে অবজেক্টের রেফারেন্স রয়েছে তা অবজেক্টের অভ্যন্তরের মানগুলি পরিবর্তন করতে পারে !
সুতরাং এমন চিন্তাভাবনায় বিভ্রান্ত হবেন না যে কেবলমাত্র পড়ুনই বোঝায় যে কোনও ব্যবহারকারী জিনিস পরিবর্তন করতে পারে না। কোনও শ্রেণীর অভ্যন্তরীণ মান পরিবর্তন হওয়া (যতদূর আমি জানি) থেকে কোনও প্রতিস্থাপন প্রতিরোধ করার জন্য সি # তে কোনও সাধারণ সিনট্যাক্স নেই।
সি #। নেট এ কনস্ট এবং পঠনযোগ্য ক্ষেত্রগুলির মধ্যে উল্লেখযোগ্য পার্থক্য রয়েছে
কনস্টটি ডিফল্ট স্থিতিশীল এবং ধ্রুবক মান দিয়ে আরম্ভ করা দরকার, যা পরে আর সংশোধন করা যায় না। কনস্ট্রাক্টরগুলিতেও মান পরিবর্তনের অনুমতি নেই। এটি সমস্ত ডেটাটাইপ দিয়ে ব্যবহার করা যাবে না। প্রাক্তন তারিখের জন্য। এটি ডেটটাইম ডেটাটাইপ দিয়ে ব্যবহার করা যাবে না।
public const DateTime dt = DateTime.Today; //throws compilation error
public const string Name = string.Empty; //throws compilation error
public readonly string Name = string.Empty; //No error, legal
কেবলমাত্র পঠনযোগ্য স্থির হিসাবে ঘোষণা করা যেতে পারে, কিন্তু প্রয়োজন হয় না। ঘোষণার সময় আরম্ভ করার দরকার নেই। কনস্ট্রাক্টর ব্যবহার করে এর মান নির্ধারিত বা পরিবর্তন করা যেতে পারে। উদাহরণস্বরূপ শ্রেণীর সদস্য হিসাবে ব্যবহার করা হলে এটি সুবিধা দেয়। দুটি পৃথক ইনস্ট্যান্টেশনের পাঠ্য ক্ষেত্রের পৃথক মান থাকতে পারে। প্রাক্তন জন্য -
class A
{
public readonly int Id;
public A(int i)
{
Id = i;
}
}
তারপরে কেবলমাত্র পাঠ্য ক্ষেত্রটি তাত্ক্ষণিক নির্দিষ্ট মানগুলির সাহায্যে সূচনা করা যেতে পারে:
A objOne = new A(5);
A objTwo = new A(10);
এখানে উদাহরণস্বরূপ পঠনযোগ্য ক্ষেত্রের মূল্য 5 এবং অজবটওয়ের 10 টি হবে যা কনস্ট ব্যবহার করা সম্ভব নয়।
একটি ধ্রুবকটি আক্ষরিক মান হিসাবে ভোক্তার মধ্যে সংকলিত হবে যখন স্থির স্ট্রিং সংজ্ঞায়িত মানটির রেফারেন্স হিসাবে কাজ করবে।
অনুশীলন হিসাবে, একটি বাহ্যিক গ্রন্থাগার তৈরি করার চেষ্টা করুন এবং এটি একটি কনসোল অ্যাপ্লিকেশনটিতে গ্রাস করুন, তারপরে গ্রন্থাগারের মানগুলি পরিবর্তন করুন এবং এটি পুনরায় কম্পাইল করুন (ভোক্তার প্রোগ্রামটি পুনরায় সংশোধন না করে) ডিরেক্টরিতে ডিএলএলটি ফেলে দিন এবং এক্সই ম্যানুয়ালি চালান, আপনার সন্ধান করা উচিত যে ধ্রুব স্ট্রিং পরিবর্তন হয় না।
ধ্রুব
সংজ্ঞা ক্ষেত্রটি যখন এটি সংজ্ঞায়িত করা হয় তখন আমাদের মান সরবরাহ করতে হবে। সংকলক এর পরে সমাবেশের মেটাডেটাতে ধ্রুবকের মান সংরক্ষণ করে। এর অর্থ হ'ল ধ্রুবককে কেবল আদিম ধরণের যেমন বুলিয়ান, চর, বাইট ইত্যাদির জন্য সংজ্ঞায়িত করা যায়। ধ্রুবকগুলি সর্বদা স্থির সদস্য হিসাবে বিবেচিত হয়, উদাহরণস্বরূপ সদস্য নয়।
শুধুমাত্র পাঠযোগ্য
পঠনযোগ্য ক্ষেত্রগুলি কেবল রানটাইমে সমাধান করা যায়। এর অর্থ ক্ষেত্রটি যে ধরণের ক্ষেত্রে ঘোষিত হয়েছে তার জন্য আমরা কনস্ট্রাক্টর ব্যবহার করে একটি মানের জন্য একটি মান নির্ধারণ করতে পারি। যাচাইকরণটি সংকলক দ্বারা করা হয় যে কেবল পাঠ ক্ষেত্রগুলি নির্মাণকারক ব্যতীত অন্য কোনও পদ্ধতিতে লিখিত হয় না।
উভয় সম্পর্কে আরও এই নিবন্ধে এখানে ব্যাখ্যা করা হয়েছে
কনস্ট এবং রিডোনলি একই রকম তবে এগুলি একেবারে এক নয়। কনস্টের ক্ষেত্রটি একটি সংকলন-সময় ধ্রুবক, যার অর্থ যে সংকলন-সময় সেই মানটি গণনা করা যায়। একটি পঠনক্ষেত্র ক্ষেত্র অতিরিক্ত পরিস্থিতি সক্ষম করে যাতে টাইপটি নির্মাণের সময় কিছু কোড চালানো উচিত। নির্মাণের পরে, কেবল পাঠযোগ্য ক্ষেত্রটি পরিবর্তন করা যায় না।
উদাহরণস্বরূপ, কনস্ট সদস্যরা সদস্যদের সংজ্ঞা হিসাবে ব্যবহার করতে পারেন:
struct Test
{
public const double Pi = 3.14;
public const int Zero = 0;
}
যেহেতু 3.14 এবং 0 এর মতো মানগুলি সংকলন-সময় ধ্রুবক। যাইহোক, আপনি যেখানে কোনও প্রকারটি সংজ্ঞায়িত করেন এবং এর প্রাক প্রাক-উদাহরণ সরবরাহ করতে চান সেই ক্ষেত্রে বিবেচনা করুন। উদাহরণস্বরূপ, আপনি একটি রঙের শ্রেণি সংজ্ঞায়িত করতে এবং কালো, সাদা ইত্যাদির মতো সাধারণ রঙগুলির জন্য "ধ্রুবকগুলি" সরবরাহ করতে চাইতে পারেন, কনস্টের সদস্যদের সাথে এটি করা সম্ভব নয়, কারণ ডান হাতের পক্ষগুলি সংকলন-সময় ধ্রুবক নয়। নিয়মিত স্থিতিশীল সদস্যদের সাথে কেউ এটি করতে পারে:
public class Color
{
public static Color Black = new Color(0, 0, 0);
public static Color White = new Color(255, 255, 255);
public static Color Red = new Color(255, 0, 0);
public static Color Green = new Color(0, 255, 0);
public static Color Blue = new Color(0, 0, 255);
private byte red, green, blue;
public Color(byte r, byte g, byte b) {
red = r;
green = g;
blue = b;
}
}
তবে রঙের কোনও ক্লায়েন্টকে এটির সাথে মিকিং থেকে বিরত রাখার মতো কিছুই নেই, সম্ভবত কালো এবং সাদা মানগুলি অদলবদল করে। বলা বাহুল্য, এটি রঙ শ্রেণীর অন্যান্য ক্লায়েন্টদের জন্য কনসেন্টেশন সৃষ্টি করবে। "পঠনযোগ্য" বৈশিষ্ট্যটি এই দৃশ্যের ঠিকানা দেয়। ঘোষণাপত্রে কেবলমাত্র পাঠ্য কিওয়ার্ডটি প্রবর্তন করে ক্লায়েন্ট কোডকে ঘায়েল করা থেকে বিরত রেখে আমরা নমনীয় সূচনাটি সংরক্ষণ করি।
public class Color
{
public static readonly Color Black = new Color(0, 0, 0);
public static readonly Color White = new Color(255, 255, 255);
public static readonly Color Red = new Color(255, 0, 0);
public static readonly Color Green = new Color(0, 255, 0);
public static readonly Color Blue = new Color(0, 0, 255);
private byte red, green, blue;
public Color(byte r, byte g, byte b) {
red = r;
green = g;
blue = b;
}
}
এটি লক্ষণীয় আকর্ষণীয় যে কনস্টের সদস্যরা সর্বদা স্থির থাকে, তবে কেবলমাত্র নিয়মিত ক্ষেত্রের মতোই কেবল পাঠযোগ্য সদস্যরা স্থির হয় বা নাও হতে পারে।
এই দুটি উদ্দেশ্যে একটি একক কীওয়ার্ড ব্যবহার করা সম্ভব তবে এটি সংস্করণে সমস্যা বা পারফরম্যান্স সমস্যার কারণ হতে পারে। এক মুহুর্তের জন্য ধরে নিন যে আমরা এই (কনস্ট্যান্ট) জন্য একটি একক কীওয়ার্ড ব্যবহার করেছি এবং একজন বিকাশকারী লিখেছেন:
public class A
{
public static const C = 0;
}
এবং অন্য বিকাশকারী কোড লিখেছেন যা এ:
public class B
{
static void Main() {
Console.WriteLine(A.C);
}
}
এখন, উত্পন্ন কোডটি কি এসি একটি সংকলন-সময় ধ্রুবক এর উপর নির্ভর করতে পারে? অর্থাত, এসি ব্যবহারের ফলে কেবল 0 মানটি প্রতিস্থাপন করা যাবে? আপনি যদি এটিকে "হ্যাঁ" বলে থাকেন তবে তার অর্থ হ'ল এ এর বিকাশকারী এসি শুরু করার উপায়টি পরিবর্তন করতে পারে না - এটি অনুমতি ছাড়াই এ এর বিকাশকারীদের হাত বাঁধে। আপনি যদি এই প্রশ্নের "না" বলেন তবে একটি গুরুত্বপূর্ণ অপটিমাইজেশন মিস হয়ে গেছে। সম্ভবত এ এর লেখক ইতিবাচক যে এসি সর্বদা শূন্য থাকবে। কনস্ট এবং পঠন উভয়ের ব্যবহার এ এর বিকাশকারীকে উদ্দেশ্য নির্দিষ্ট করতে দেয় allows এটি উন্নত সংস্করণ আচরণ এবং আরও ভাল কর্মক্ষমতা তৈরি করে।
পার্থক্যটি হ'ল স্ট্যাটিক রিডোনলি ফিল্ডের মান রান সময় নির্ধারিত হয়, সুতরাং প্রোগ্রামের বিভিন্ন নির্বাহের জন্য এটির আলাদা মান থাকতে পারে। যাইহোক, একটি কনস্টের ক্ষেত্রের মান একটি সংকলন সময় ধ্রুবককে সেট করা হয়।
মনে রাখবেন: রেফারেন্স ধরণের জন্য, উভয় ক্ষেত্রে (স্থিতিশীল এবং উদাহরণ), কেবলমাত্র পঠনযোগ্য সংশোধক আপনাকে ক্ষেত্রে একটি নতুন রেফারেন্স নির্ধারণ থেকে বাধা দেয়। এটি নির্দিষ্ট করে রেফারেন্স দ্বারা নির্দেশিত বস্তুটিকে পরিবর্তনযোগ্য করে তোলে না।
বিস্তারিত জানার জন্য, দয়া করে এই বিষয়টিতে সি # প্রায়শই জিজ্ঞাসিত প্রশ্নগুলি দেখুন: http://blogs.msdn.com/csharpfaq/archive/2004/12/03/274791.aspx
কনস্ট্যান্ট : অ্যাপ্লিকেশন লাইফের সময় সম্পূর্ণ ধ্রুবক মান।
পঠনযোগ্য : চলমান সময়ে এটি পরিবর্তন করা যেতে পারে।
মানুষ উপরে যা বলেছে তাতে যুক্ত করার একটি বিষয়। যদি আপনার একটি পঠনযোগ্য মান (যেমন পঠনযোগ্য ম্যাক্সফুকাউন্ট = 4%) সমেত একটি অ্যাসেমব্লী থাকে তবে আপনি কলিং অ্যাসেম্বলিসমূহ সেই সমাবেশটির একটি নতুন সংস্করণ আলাদা মান সহ শিপিং করে যে মানটি দেখতে পাবেন তা পরিবর্তন করতে পারেন (যেমন পঠনযোগ্য ম্যাক্সফুকাউন্ট = 5;)
তবে কনস্টের সাহায্যে কলারটি সংকলন করা হলে এটি কলারের কোডে ফোল্ড হয়ে যায়।
আপনি যদি সি # দক্ষতার এই স্তরে পৌঁছে গেছেন তবে আপনি বিল ওয়াগনারের বই, কার্যকর সি #: আপনার সি উন্নত করার 50 টি নির্দিষ্ট উপায়ের জন্য প্রস্তুত রয়েছেন যা এই প্রশ্নের বিস্তারিতভাবে উত্তর দেয় (এবং অন্যান্য 49 টি বিষয়)।