Constants.md - brainchildservices/curriculum GitHub Wiki
Slide 1
What is a Constant variable?
A variable whose value can not be changed during the execution of the program is called a constant variable.
In the above definition, the value can not be changed during execution of the program, which means we cannot assign values to the constant variable at run time. Instead, it must be assigned at the compile time.
Slide 2
Constants are of the following types:
Slide 3
In the above diagram, we can see the Constants are of two types
-
Compile time constants (const)
-
Runtime constants (Readonly)
-
Compile time constants
The compile time constants are declared by using the const keyword, in which the value can not be changed during the execution of the program.
Syntax
int const a=10;
Slide 4
Some key points about const variable
- It must be assigned a value at the time of declaration.
eg.
int const a=10;
- const only allow constant variables into the expression.
eg.
int const a=10;
int const b=20; // correct
int const c=a+b;
int d=1;
int const c=d+b; //compile time error because d variable is the non constant into expression.
Slide 4
- const can be declared at the class level as well as inside the method.
- const can not be declared using static keyword because they are by default static.
- constants are absolute constants in which their value cannot be changed or assigned at the run time.
- constant variables are compile time variables.
When to use const
The const is used when its value is absolutely constant. Such PI values cannot be changed, but according to your needs, you can use it as you wish rather than declaring PI values.
Slide 5
Runtime constants (Readonly)
The Run time constants are declared by using the Readonly
keyword which value can not be changed during the execution of the program.
Syntax
int Readonly a; or
int Readonly a=0;
Slide 6
Some key points about const variable
- It's not just to assign a value at the time of declaration, we can also assign the value for read-only through the constructor.
eg
int readonly a;
a=0;
- Readonly allows, readonly constant as well as non-readonly constant variables into the expression.
eg.
int readonly a=10;
int b=1;
int readonly c=a+b;
Slide 7
- Readonly can be declared only at the class level, not inside the method.
- Readonly can not be declared using static keywords because they are by default static.
- Readonly constant's value can be set through the reference variable.
- Readonly constant variables are a runtime time constant variable.
Slide 8
When to use Readonly
We can use Readonly when its value is not an absolute constant, which means it can be changed frequently, such as dollars vs INR, in this requirement we can set the value through a configuration file or another variable expression so we can avoid changing the class file frequently.
Example of Readonly variable.
<configuration>
<appSettings>
<add key="DollarPrice" value="61.23"/>
</appSettings>
</configuration>
Slide 8 Downwards
Now, let us explain it through this sample program
using System;
using System.Configuration;
namespace Usingreadonly
{
class Program
{
readonly int a = 10;
int b = 30;
int c;
readonly string r;
public Program()
{
r = ConfigurationManager.AppSettings["DollarPrice"];
Console.WriteLine("The dollar value is:"+" "+r);
Console.WriteLine();
c = a + b;
Console.WriteLine("The addition of readonly constant and non Readonly constant is :"+Environment.NewLine+ c);
Console.ReadLine();
}
static void Main(string[] args)
{
Program p = new Program();
Console.ReadLine();
}
}
}
Slide 9
In the above program ,we have assigned the value for readonly constant through constructor which is defined in the config file since a readonly constant isn't necessary to assign the value at the time of declaration. Now run the program, the output will be:
Slide 10
Let us outline the differences between const and readonly variables.
- const fields need to be initialized with declaration only, while readonly fields can be initialized at declaration or in the constructor.
- const variables can be declared in methods, while readonly fields cannot be declared in methods.
- const fields cannot be used with static modifier, while readonly fields can be used with static modifier.
- const field is a compile-time constant, the readonly field can be used for run time constants.