What if one small number change could break your whole program? Constants and readonly fields save you from that nightmare.
Why Constants and readonly fields in C Sharp (C#)? - Purpose & Use Cases
Imagine you have a program where you use the same value, like the number of days in a week, in many places. You write the number 7 everywhere by hand.
Later, you realize you need to change it or you accidentally type 8 somewhere. This causes bugs and confusion.
Manually typing the same value repeatedly is slow and risky. You might mistype it or forget to update all places if the value changes.
This leads to errors that are hard to find and fix.
Constants and readonly fields let you store a value once and use it everywhere safely.
Constants are fixed forever, while readonly fields can be set once when the program runs.
This keeps your code clean, easy to update, and less error-prone.
int daysInWeek = 7; // repeated everywhere int totalDays = 7 * 4; // what if 7 changes?
const int DaysInWeek = 7; int totalDays = DaysInWeek * 4; // safe and clear
You can write safer, clearer code that is easy to maintain and less likely to break when values need to change.
Think of a game where the maximum player health is always 100. Using a constant for this value means you never accidentally use the wrong number, and if you want to change max health later, you do it in one place.
Manually repeating values causes bugs and wastes time.
Constants and readonly fields store values safely and clearly.
This makes your code easier to read, update, and trust.
Practice
const and readonly fields in C#?Solution
Step 1: Understand
constbehaviorconstfields are fixed at compile time and cannot be changed later.Step 2: Understand
readonlybehaviorreadonlyfields can be assigned once at runtime, usually in a constructor, and then cannot change.Final Answer:
constvalues are set at compile time and cannot change;readonlyvalues can be set at runtime but only once. -> Option CQuick Check:
constfixed at compile,readonlyset once at runtime [OK]
- Thinking readonly can be changed multiple times
- Confusing when const values are set
- Assuming const can be assigned in constructors
MaxValue with value 100 in C#?Solution
Step 1: Check correct syntax for constant declaration
In C#,constmust be followed by type, then name and value, likeconst int MaxValue = 100;.Step 2: Identify incorrect options
readonlyrequires a type and cannot be declared like a constant;int constis invalid syntax in C#;static readonlyrequires a type and cannot omit it.Final Answer:
const int MaxValue = 100; -> Option BQuick Check:
const syntax = const type name = value; [OK]
- Using 'int const' instead of 'const int'
- Omitting type in readonly declaration
- Confusing const and readonly syntax
class Test {
public readonly int Value;
public Test(int val) {
Value = val;
}
}
class Program {
static void Main() {
var t = new Test(10);
Console.WriteLine(t.Value);
}
}Solution
Step 1: Understand readonly assignment in constructor
ThereadonlyfieldValueis assigned in the constructor withval, which is 10.Step 2: Check output of Console.WriteLine
The program prints the assigned value ofValue, which is 10.Final Answer:
10 -> Option AQuick Check:
readonly set in constructor prints assigned value [OK]
- Assuming readonly defaults to 0 if assigned in constructor
- Thinking readonly cannot be assigned in constructor
- Expecting compilation or runtime errors
class Sample {
public const int Number;
public Sample() {
Number = 5;
}
}Solution
Step 1: Check const assignment rules
constfields must be assigned a value when declared and cannot be assigned later.Step 2: Analyze code assignment
The code tries to assignNumber = 5;inside the constructor, which is invalid forconst.Final Answer:
Cannot assign a value to a const field outside declaration. -> Option AQuick Check:
const must be assigned only at declaration [OK]
- Trying to assign const in constructor
- Confusing const with readonly assignment rules
- Assuming no error in code
Solution
Step 1: Assign fixed tax rate with const
The tax rate never changes, soconstis appropriate forTaxRate.Step 2: Assign discount rate once at object creation
The discount rate can be set once when the object is created, soreadonlyis suitable forDiscountRate.Step 3: Eliminate incorrect options
public readonly double TaxRate = 0.15; public const double DiscountRate; swaps const and readonly incorrectly; public static double TaxRate = 0.15; public double DiscountRate; uses mutable fields; public double TaxRate = 0.15; public readonly double DiscountRate; uses non-const for tax rate.Final Answer:
public const double TaxRate = 0.15; public readonly double DiscountRate; -> Option DQuick Check:
const fixed forever, readonly set once at creation [OK]
- Using readonly for fixed values
- Using const for values set at runtime
- Not understanding when to use static
Ready to prove it?
Pass the test and this pattern moves unknown
