Introduction: Why Variables in C#
ููู ุฃุตูุงู ุจูุนู ู Programsุ ุนุดุงู ูุนุงูุฌ ู ุนููู ุงุช ุฃู ุจูุงูุงุช. ุฒู ู ุซูุงู Program ุจุชุงุน ุจููุ ูู ุง ุจูุนู ููุง ู ุนุงู ูุฉุ ูู ุง ุจูุนุงูุฌูุง ุจูุงูุงุช ุฒู ุฑูู ุงูุญุณุงุจุ ุงุณู ุตุงุญุจ ุงูุญุณุงุจุ ุงูุฑุตูุฏ ูููุฐุง.
ุฃู ุจูุงูุงุช ุฃู ู ุนููู ุงุช ุจูุนุงูุฌูุงุ ูุงุฒู ุชููู ู ุชุฎุฒูุฉ ูู ู ูุงู ู ุนูู. ุงูู ูุงู ุฏู ุจูุณู ูู Memory Location (ู ููุน ูู ุงูุฐุงูุฑุฉ). ูู ุฌูุงุฒ ูู ุจููุชุฑ ููู Memory Locationsุ ููู Memory Location ููู ุนููุงู (address) ุจูู ูุฒู. ู ู ูู ูุชุฎูููุง ุฒู ูุฑุงุณู ูู ุณููู ุงุ ูู ูุฑุณู ููู ุฑูู .
ุงูู Memory Locations ุฏู ูู ูุงุญุฏ ููู ุนููุงูุ ุงูุนูุงููู ุฏู ู ู ูู ูุนุชุจุฑูุง ุฃุฑูุงู ุตุญูุญุฉ ู ูุฌุจุฉ.

What is the relation between variable and memory locations?
ุงูุฑุถ ุนุงูุฒ ุฃุฎุฒู ุงูููู ุฉ 10 ูู ุงูู Memory. ุฒู ู ุง ุงูุทูุงุจ ูู ุงููุตู ู ู ูู ููุนุฏูุง ูู ุฃู ูุฑุณู ุจุดูู ุนุดูุงุฆูุ ุงูููู ุฉ 10 ุฏู ูู ุงู ูุชุชุฎุฒู ูู ุฃู Memory Location ุจุดูู ุนุดูุงุฆู.

How to Access the Data?
ุทุจ ุฏูููุชู ูู ุนุงูุฒ ุฃูุตู ููุจูุงูุงุช ุฏูุ ูุนูู ููููู ุฉ 10ุ ูุฃุทุจุนูุง ู ุซูุงูุ ููุงุจู ู ุดููุฉ. ูููุ ุนุดุงู ู ุด ูุนุฑู ุฃุญุฏุฏ ุงูู Memory Location ุงููู ุงูุจูุงูุงุช ุงุชุฎุฒูุช ููู ุจุงูุธุจุทุ ูุฃููุง ุงุชุฎุฒูุช ุจุดูู ุนุดูุงุฆู. ุงููุตูู ููู Memory Location ุจูุจูู ุตุนุจ ุฌุฏุงู ุจุนุฏ ุชุฎุฒูู ุงูู ุนููู ุงุช. ุทูุจ ุฅูู ุงูุญูุ ูุจู ู ุง ุฃุฎุฒู ุงูู ุนููู ุงุชุ ูุงุฒู ุฃุฏู ูููุฉ (identity) ููู Memory Location ุงููู ุงูุจูุงูุงุช ูุชุชุฎุฒู ููู.
How we can set Identity to Memory Locations?
ููุฏุฑ ูุฏู ูููุฉ ููู Memory Location ุจุงุณุชุฎุฏุงู ุงูู Variablesุ ุฃู ู ู ูู ุชููู ุนูููุง Identifiers. ุงูู Syntax ุนุดุงู ุชุนุฑู Variable ูุชุฏู ูููุฉ ููู Memory Location ูู C# ูู ูุงูุชุงูู: ุงูุฃูู ุจููุชุจ ุงูู data_type ูุจุนุฏูู ุงูู Identifier (ุงุณู ุงูู Variable).
Syntax: data_type Identifier;
ู
ุซุงู: int a; ููุง ุงูู int ูู ุงูู data typeุ ูุงูู Identifier ูู โaโ. ูู
ุง ุจูุนุฑู Variable ูุฏูุ ุจูุชู
ุชุฎุตูุต Memory ููู. ุงูู Memory Location ุฏู ุจูุงุฎุฏ ุงููููุฉ ุงููู ูู ุงุณู
ุงูู Variable ุฒู ู
ุง ูู ุงูุตูุฑุฉ:

ุงูู โaโ ููุง ูู ุงุณู ููู Memory Location ุฑูู 10344. ุจุนุฏ ูุฏู ููุฏุฑ ูุฎุฒู ููู ุฉ ูู ุงูู Memory Location ุฏู ุงููู ู ุชุนุฑู ุจู โaโ ูุงูุชุงูู:
ุงูู a = 10; // ููุง ุงูููู
ุฉ ูู 10 ูุจูุฎุฒููุง ูู ุงูู Memory Location ุงููู ู
ุชุนุฑู ุจู โaโ ุฒู ุงูุตูุฑุฉ:

ู ุซุงู ุชุงูู: ูู ุงูุณููู ุงุ ูู ูุฑุณู ููู ุฑูู ู ู ูุฒุ ููู ุง ุจุชูุฌู ุจุชูุนุฏ ูู ุงููุฑุณู ุงููู ู ุชุฎุตุตูู. ุจุนุฏ ูุฏู ูู ุนุงูุฒ ููุงุฏูู ุฃู ููุตููููุ ููุฏุฑูุง ููุตูููู ุจุณูููุฉ ุนู ุทุฑูู ุฑูู ุงููุฑุณู.
What is a Variable in C# Language?
ุงุณู ุจูุฏูู ูุฃู Memory Location ูู ุงููู ุจููุชุฑ ุฏู ุจูุณู ูู Variable. ุงููุฏู ู ู ุงูู Variable ูู ุฅูู ูุฏู ุงุณู ููู Memory Location ุงููู ุจูุฎุฒู ููู ุจูุงูุงุช ู ุนููุฉ. ุงูู User ุจููุตู ููุจูุงูุงุช ุฏู ุนู ุทุฑูู ุงุณู ุงูู Variable ูุงูู Compiler ุจููุตู ููุจูุงูุงุช ุนู ุทุฑูู ุงูู memory address. ูุจูู ุงูู Variable ูู ู ูุงู ู ุชุณู ู ูู Memory ุงููู ุจููุชุฑุ ุงูุจุฑูุงู ุฌ ููุฏุฑ ูุฎุฒู ููู ุงูุจูุงูุงุช.
Variables
- ุงูู Variables ุฏู ุฒู ุญุงููุงุช (containers) ุจูุฎุฒู ูููุง ููู ุงูุจูุงูุงุช (data values).
- ุงูู Variable ุฏู ุจูุชุบูุฑ ู ุน ุงูููุช ุญุณุจ ุงูููู ุฉ ุงููู ุจูุฏููุงูู.
- ููุฏุฑ ูุณุชุฎุฏู ุฃู ููุน ู ู ุฃููุงุน ุงูู data types ุงูู ูุฌูุฏุฉ ูู CSharp Memory Management.
Declaring (Creating) Variables
ุงูู Variables ูู ุญุงููุงุช ูุชุฎุฒูู ููู ุงูุจูุงูุงุช.
// type variableName = value;
string name = "Corn"; // Define a string variable and assign a value
int myNum = 15; // Define an integer variable and assign a value
// Declare without assigning
int myNum; // Declare an integer variable
// Assignment
myNum = 15; // Assign a value later
// if you assign a new value to an existing variable, it will overwrite the previous value
int myNum = 15; // Initial assignment
myNum = 20; // Reassigns the value, myNum is now 20
int myNum = 5; // Integer variable
double myDoubleNum = 5.99D; // Double variable
char myLetter = 'D'; // Character variable
bool myBool = true; // Boolean variable
string myText = "Hello"; // String variableุงูู Syntax ุนุดุงู ุชุนุฑู Variable ูู C# ูุงูุชุงูู:
Syntax: data_type variable_name;
Example: int age;
ุงูู Syntax ุนุดุงู ุชุฏู ููู
ุฉ ู
ุจุฏุฆูุฉ (initialize) ูู Variable ูู C# ูุงูุชุงูู:
Syntax: data_type variable_name = value;
Example: int age = 20;
Multiple Variables
ุนุดุงู ุชุนุฑู ุฃูุชุฑ ู ู Variable ู ู ููุณ ุงูููุนุ ู ู ูู ุชุณุชุฎุฏู ูุณุชุฉ ู ูุตููุฉ ุจู comma:
int x = 5, y = 6, z = 50; // Declare and initialize multiple int variables
Console.WriteLine(x + y + z); // Print the sum
// You can also assign the same value to multiple variables in one line
int x, y, z; // Declare multiple int variables
x = y = z = 50; // Assign the same value to all of themRules for variable declaration in C#
- ุงุณู
ุงูู Variable ูุงุฒู
ูุจุฏุฃ ุจุญุฑู ุฃู ุนูุงู
ุฉ ุงูู underscore (
_). - ุงูู Variables ูู C# ุจุชูุฑู ุจูู ุงูุญุฑูู ุงููุจูุฑุฉ ูุงูุตุบูุฑุฉ (case sensitive). ูุนูู
myVarู ุฎุชููุฉ ุนูmyvar. - ู ู ูู ุชุชููู ู ู ุฃุฑูุงู ูุญุฑูู.
- ู ุด ู ุณู ูุญ ุจุฃู ุฑู ูุฒ ุฎุงุตุฉ ุบูุฑ ุงูู underscore.
- ุฃู
ุซูุฉ ุนูู ุฃุณู
ุงุก Variable ุตุญูุญุฉ:
sum,Height,_value,abc123.
Types of Variables in a Class in C#
ููู ุฃุฑุจุน ุฃููุงุน ุฃุณุงุณูุฉ ู ู ุงูู Variables ู ู ูู ูุนุฑููุง ุฌูู ุงูู Class ูู C#:
- Non-Static/Instance Variable
- Static Variable
- Constant Variable
- Readonly Variable
ุจุงูุฅุถุงูุฉ ููุฃููุงุน ุฏูุ ููู ุฃููุงุน ุชุงููุฉ ูููุง ุงุณุชุฎุฏุงู
ุงุช ุฎุงุตุฉ ุฒู var, object, ู dynamic. ููุชููู
ุนู ูู ููุน ุจุงูุชูุตูู.
Static and Non-Static Variables in C#
ูู ุนุฑููุง Variable ุตุฑุงุญุฉู ุจุงุณุชุฎุฏุงู
ุงูู modifier ุงููู ุงุณู
ู staticุ ุจูุณู
ูู static variable. ูุจุงูู ุงูู Variables ูููุง ุจุชุจูุง non-static variables (ุงูุชุฑุงุถู). ูู ุนุฑููุง Variable ุฌูู static block (ุฒู ุงูู Main method ุงููู ูู static)ุ ูุจูู ุงูู Variable ุฏู static variable. ููู ุนุฑููุง Variable ุฌูู non-static block (ุฒู Method ุนุงุฏูุฉ ู
ุด static)ุ ูุจูู ุฏู non-static variable.
ุนุดุงู ูููู ุฃูุชุฑุ ุจุต ุนูู ุงูู Example ุฏู. ู ุนุฑููู ููู ุชูุงุชุฉ Variables:
- ุงูู Variable
xูู static variable ุนุดุงู ู ุชุนุฑู ุจูstatic. - ุงูู Variable
yูู non-static ุงูุชุฑุงุถู. - ุงูู Variable
zูู static ุนุดุงู ู ุชุนุฑู ุฌูู ุงููMainmethod ุงููู ููstatic.
using System;
namespace TypesOfVariables
{
internal class Program
{
static int x; // Static Variable (Class level)
int y; // Non-Static or Instance Variable (Class level)
static void Main(string[] args)
{
int z; // Static Variable (Local to Static method)
}
}
}ุฏูููุชูุ ุชุนุงู ูุญุงูู ูุทุจุน ููู
ุฉ x ู y ุฌูู ุงูู Main method. ุฎูููุง ูุฏููู ููู
ุฉ ู
ุจุฏุฆูุฉ: x = 100 ู y = 200. ุชูุฏุฑ ุชุทุจุน ููู
ุฉ x ู
ุจุงุดุฑุฉ ุฌูู ุงูู Main method. ููู ู
ุด ูุชูุฏุฑ ุชุทุจุน ููู
ุฉ y ู
ุจุงุดุฑุฉ.
using System;
namespace TypesOfVariables
{
internal class Program
{
static int x = 100; // Static Variable initialized
int y = 200; // Non-Static or Instance Variable initialized
static void Main(string[] args)
{
Console.WriteLine($"x value: {x}"); // Accessing static variable directly
Console.Read();
}
}
}Output: x value: 100
ูู ุญุงูููุง ูุทุจุน ููู
ุฉ y ู
ุจุงุดุฑุฉุ ููุฌูููุง Compile-time error ุจูููู an object reference is required for the non-static field, method, or property โProgram.yโ. ูุนูู ู
ุญุชุงุฌูู Object ุนุดุงู ููุตู ูู y ุงููู ูู non-static. ุจุต ุนูู ุงูู Example ุฏู ุงููู ุจูุญุงูู ููู ูุทุจุน x ู y ู
ุจุงุดุฑุฉ:
using System;
namespace TypesOfVariables
{
internal class Program
{
static int x = 100; // Static Variable
int y = 200; // Non-Static or Instance Variable
static void Main(string[] args)
{
Console.WriteLine($"x value: {x}"); // OK
Console.WriteLine($"x value: {y}"); // Compile-time Error here!
Console.Read();
}
}
}ูู ุง ุชุญุงูู ุชุดุบู ุงูู Code ุฏูุ ููุฌููู Compile Time Error.
ุงูุณุจุจ ูู ูุฏู ุฅู ุงูู Memory ููู Variable y ู
ุด ุจุชุชุนู
ู ุบูุฑ ูู
ุง ูุนู
ู instance ู
ู ุงูู Class ุงููู ุงุณู
ูุง Programุ ูููู instance ุจูุนู
ูู. ููู ุงูู x ู
ุด ู
ุญุชุงุฌ instance ู
ู ุงูู Class. ูููุ ูุฃู ุงูู static variable ุจูุชู
ุชููุฆุชู (initialized) ุฃูู ู
ุง ุงูู Class ุชุจุฏุฃ ุชุชููุฐ.
ูุนูู ูุญุฏ ู
ุง ูุนู
ู instance ู
ู ุงูู Class Programุ ุงูู Memory ู
ุด ูุชุชุฎุตุต ููู Variable yุ ูุทูู ู
ุง ุงูู Memory ู
ุด ู
ุชุฎุตุตุฉ ูู yุ ู
ุด ูููุฏุฑ ููุตููุง. ูุจููุ ุฃูู ู
ุง ูุนู
ู instance ู
ู ุงูู Class Programุ ุงูู Memory ููู Variable y ูุชุชุฎุตุตุ ูุณุงุนุชูุง ุจุณ ูููุฏุฑ ููุตู ููู Variable y.
ูู ุงูู Example ุฏูุ ููุนู
ู instance ู
ู ุงูู Class Programุ ููุณุชุฎุฏู
ุงูู instance ุฏู ุนุดุงู ููุตู ููู Variable y. ููู ุงูู x ูููุตูู ู
ุจุงุดุฑุฉ.
using System;
namespace TypesOfVariables
{
internal class Program
{
static int x = 100; // Static Variable
int y = 200; // Non-Static or Instance Variable
static void Main(string[] args)
{
Console.WriteLine($"x value: {x}"); // Access static directly
Program obj = new Program(); // Create an instance of the Program class
Console.WriteLine($"y value: {obj.y}"); // Access non-static using the instance
Console.Read();
}
}
}ุฏูููุชู ูู
ุง ุชุดุบู ุงูู Code ุงููู ููู ุฏูุ ูุชูุงูู ุจูุทุจุน ููู
ุฉ x ู y ุงูุงุชููู ุนุงุฏู:
Output:
x value: 100
y value: 200
ู ุนููู ุฉ: ุฃูู ููุทุฉ ู ุญุชุงุฌ ุชูุชูุฑูุง ูุฃูุช ุจุชุดุชุบู ู ุน ุงูู static ูุงูู non-static variablesุ ุฅู ุงูู static members (variables, methods, etc.) ูู ุงูู Class ู ุด ู ุญุชุงุฌูู instance ู ู ุงูู Class ุนุดุงู ูุชู ุชููุฆุชูู ูุชูููุฐูู . ูู ุงูู ูุงุจูุ ุงูู non-static members ูู ุงูู Class ู ุญุชุงุฌูู instance ู ู ุงูู Class ุนุดุงู ูุชู ุชููุฆุชูู ูุชูููุฐูู .
When Static and Non-Static Variables are Initialized in C#?
ุงูู Static variables ูู ุงูู Class ุจูุชู ุชููุฆุชูุง ุฃูู ู ุง ุงูู Class ุชุจุฏุฃ ุชุชููุฐ. ุฃู ุง ุงูู non-static variables ุฃู ุงูู instance variables ุจูุชู ุชููุฆุชูุง ููุท ุจุนุฏ ุนู ู instance ู ู ุงูู Classุ ููู ูู ู ุฑุฉ ุจูุนู ู ูููุง instance ุฌุฏูุฏ ู ู ุงูู Class.
ุงููุชุฑุฉ ู ู ุฃูู ู ุง ูุจุฏุฃ ุชูููุฐ ุงูู Class ูุญุฏ ู ุง ูุฎูุต ุชูููุฐู ุจูุณู ููุง ุงูู Life Cycle ุจุชุงุนุฉ ุงูู Class. ูู ุงูู Life Cycle ุฏูุ ุงูู static variables ุจูุชู ุชููุฆุชูุง ู ุฑุฉ ูุงุญุฏุฉ ุจุณ. ุฃู ุง ุงูู non-static ุฃู ุงูู instance variables ุจูุชู ุชููุฆุชูุง 0 ู ุฑุฉ ูู ู ุง ุนู ููุงุด ุฃู instanceุ ู N ู ุฑุฉ ูู ุนู ููุง N ู ู ุงูู instances.
ุชุนุงู ูููู
ุฏู ุจู
ุซุงู. ุจุต ุนูู ุงูู Code ุฏู. ููุนู
ู ููู instance ู
ู ุงูู Class Program ู
ุฑุชูู.
using System;
namespace TypesOfVariables
{
internal class Program
{
static int x = 100; // Static Variable
int y = 200; // Non-Static or Instance Variable
static void Main(string[] args)
{
Console.WriteLine($"x value: {x}"); // x is 100
Program obj1 = new Program(); // Create first instance
Program obj2 = new Program(); // Create second instance
Console.WriteLine($"obj1 y value: {obj1.y}"); // y for obj1 is 200
Console.WriteLine($"obj2 y value: {obj2.y}"); // y for obj2 is 200
Console.Read();
}
}
}ูู ุงูู Example ุฏูุ ุฃูู ู
ุง ุงูู Program execution startsุ ุงูู memory is allocated ููู static variable x. ุจุนุฏ ูุฏู ุนู
ููุง instance ู
ู ุงูู Class Program ู
ุฑุชููุ ุฏู ู
ุนูุงู ุฅู ุงูู memory ุงุชุฎุตุตุช ููู Variable y ู
ุฑุชูู. ู
ุฑุฉ ููู instance obj1 ูู
ุฑุฉ ููู instance obj2. ุนุดุงู ุชููู
ุฃูุชุฑุ ุจุต ุนูู ุงูู Diagram ุฏู ุงููู ุจูู
ุซู ุงูู Memory architecture ููู Example ุงููู ููู.

ุฒู ู
ุง ุฃูุช ุดุงูู ูู ุงูู Diagram ุงููู ูููุ ุงูู static variable x ููุชุนู
ู ู
ุฑุฉ ูุงุญุฏุฉ ุจุณุ ูุงูู non-static variable y ููุชุนู
ู ู
ุฑุชูู ุนุดุงู ุนู
ููุง instance ู
ู ุงูู Class Program ู
ุฑุชูู.
Initializing Non-Static variables through Class Constructor in C#
ูู ุง ุจูุนู ู instance ู ู ุงูู Classุ ุงูู constructor ุจูุชู ุงุณุชุฏุนุงุคู (called)ุ ูู ู ููุง ููุฏุฑ ูููุฆ (initialize) ุงูู instance variables ุฃู ุงูู non-static variables ุนู ุทุฑูู ุงูู Class constructor.
ูู ุงูู Example ุงููู ูุงุชุ ุงูุงุชููู objects ูุงู ุนูุฏูู
ููุณ ููู
ุฉ y ุงููู ูู 200. ุฏูููุชูุ ูู ุนุงูุฒ ุชุฏููู ููู
ู
ุฎุชููุฉุ ุชูุฏุฑ ุชุนู
ู ุฏู ุจุงุณุชุฎุฏุงู
ุงูู constructor. ุชุนุงู ูููู
ุฏู ุจู
ุซุงู. ูู ุงูู Example ุงููู ุชุญุชุ ุนู
ููุง constructor ุจูุงุฎุฏ integer parameter ูุงุญุฏุ ูููู
ุฉ ุงูู parameter ุฏู ุจูุณูุฏูุง (assign) ููู non-static variable y. ูุงุญูุง ุจูุนู
ู ุงูู instance ุฌูู ุงูู Main methodุ ุจูู
ุฑุฑ ููู
ู
ุฎุชููุฉ. ุฏูููุชูุ ุฃู ููู
ุฉ ููู
ุฑุฑูุงุ ููุชู
ุชุฎุฒูููุง ุฌูู ุงูู non-static variable y.
using System;
namespace TypesOfVariables
{
internal class Program
{
static int x = 100; // Static Variable
int y = 200; // Non-Static or Instance Variable (Initial default)
// Class Constructor
public Program(int a) // Constructor takes an int parameter
{
y = a; // Initializing non-static variable y with the passed value
}
static void Main(string[] args)
{
Console.WriteLine($"x value: {x}"); // x is 100
Program obj1 = new Program(300); // Create obj1, y is 300 for this instance
Program obj2 = new Program(400); // Create obj2, y is 400 for this instance
Console.WriteLine($"obj1 y value: {obj1.y}");
Console.WriteLine($"obj2 y value: {obj2.y}");
Console.Read();
}
}
}Output:
x value: 100
obj1 y value: 300
obj2 y value: 400
ุฏูููุชูุ ูู ุงูู Memoryุ ููู
ุฉ y ููู obj1 ูุชุจูู 300ุ ูููู obj2 ูุชุจูู 400. ููู ููู
ุฉ ุงูู x ูุชูุถู ุฒู ู
ุง ูู 100. ุนุดุงู ุชููู
ุฃูุชุฑุ ุจุต ุนูู ุงูู Diagram ุฏู ุงููู ุจุชูุถุญ ุงูู Memory representation.

ู
ู
ูู ูุฌููู ุณุคุงู ุฏูููุชูุ ูู ููุฏุฑ ูููุฆ ุงูู static variable ุนู ุทุฑูู ุงูู constructorุ ุงูุฅุฌุงุจุฉ ูู ุฃููุฉ. ููุฏุฑ ูููุฆ ุงูู static variable ุนู ุทุฑูู ุงูู constructor. ุจุณ ูู ู
ุฑุฉ ุงูู constructor ูุชููุฐ ูููุงุ ููู
ุฉ ุงูู static variable ุงููุฏูู
ุฉ ููุชู
ุงุณุชุจุฏุงููุง ุจุงูููู
ุฉ ุงูุฌุฏูุฏุฉ. ุนุดุงู ุชููู
ุฃูุชุฑุ ุจุต ุนูู ุงูู Example ุฏู. ูู ุงูู Example ุงููู ุชุญุชุ ุจูููุฆ ุงูู static variable ุนู ุทุฑูู ุงูู Class constructor. ุฌุฒุก ู
ู ุดุบู ุงูู constructor ุฅูู ุจูููุฆ ุงูู Variables x ู y ุจููู
ุฉ ุงูู parameter a.
using System;
namespace TypesOfVariables
{
internal class Program
{
static int x = 100; // Static Variable
int y = 200; // Non-Static or Instance Variable (Initial default)
// Class Constructor
public Program(int a) // Constructor takes an int parameter
{
y = a; // Initializing non-static variable
x = a; // Initializing static variable - !!! This will overwrite x for *all* instances !!!
}
static void Main(string[] args)
{
Console.WriteLine($"x value: {x}"); // x = 100 initially
Program obj1 = new Program(300); // Constructor sets x to 300
Console.WriteLine($"obj1 y value: {obj1.y}"); // y = 300 for obj1
Console.WriteLine($"x value: {x}"); // x is now 300
Program obj2 = new Program(400); // Constructor sets x to 400
Console.WriteLine($"obj2 y value: {obj2.y}"); // y = 400 for obj2
Console.WriteLine($"x value: {x}"); // x is now 400
Console.Read();
}
}
}Output:
x value: 100
obj1 y value: 300
x value: 300
obj2 y value: 400
x value: 400
ุนุดุงู ุชููู ุฃูุชุฑุ ุจุต ุนูู ุงูู Diagram ุฏู:

ูุจูู ุงูููุทุฉ ุงููู ู ุญุชุงุฌ ุชูุชูุฑูุง ูู ุฅูู ูู ุจุชุนู ู ุชููุฆุฉ (initializing) ููู static variable ุนู ุทุฑูู ุงูู constructorุ ููู ู ุฑุฉ ุงูู constructor ูุชููุฐ ูููุงุ ุงูููู ุฉ ุงูู ูุฌูุฏุฉ ุญุงููุงู ูู ุงูู static variable ููุชู ุงุณุชุจุฏุงููุง ุจุงูููู ุฉ ุงูุฌุฏูุฏุฉ. ูุฐููุ ุนู ูู ุงู ู ุด ุจูุนู ู ุชููุฆุฉ ููู static variables ุนู ุทุฑูู ุงูู constructor. ูู ุนุงูุฒ ุชููุฆ Variable ุนู ุทุฑูู ุงูู constructorุ ุฎููู non-static.
Difference Between Static and Non-Static Variables in C#
- ูู ุญุงูุฉ ุงูู Instance Variableุ ูู Object ููุจูู ููู ูุณุฎุชู ุงูุฎุงุตุฉ ุจูู. ุฃู ุง ุงูู Static variableุ ุจูุจูู ูููุง ูุณุฎุฉ ูุงุญุฏุฉ ุจุณ ู ุดุชุฑูุฉ ุจูู ูู ุงูู Objects ุจุบุถ ุงููุธุฑ ุนู ูุช ูุงู Object.
- ุงูุชุบููุฑุงุช ุงููู ุจุชุนู ููุง ูู ุงูู instance variable ุจุงุณุชุฎุฏุงู Object ู ุนูู ู ุด ูุชุธูุฑ ูู ุงูู Objects ุงูุชุงููุฉุ ูุฃู ูู Object ููู ูุณุฎุชู ุงูุฎุงุตุฉ ู ู ุงูู instance variable. ุฃู ุง ูู ุญุงูุฉ ุงูู static variablesุ ุฃู ุชุบููุฑ ุจูุญุตู ูู Object ู ุนูู ููุธูุฑ ูู ูู ุงูู Objects ุงูุชุงููุฉุ ูุฃู ุงูู static variables ู ุดุชุฑูุฉ ุจูู ูู ุงูู Objects ุจุชุงุนุช ุงูู Class.
- ุงูู instance variables ุจููุฏุฑ ููุตููุง ุนู ุทุฑูู ุงูู object references (ูุนูู ุงุณู
ุงูู object ูุงูููุทุฉ
.). ุฃู ุง ุงูู Static Variables ุจููุฏุฑ ููุตููุง ู ุจุงุดุฑุฉ ุจุงุณุชุฎุฏุงู ุงุณู ุงูู Class ูู C#. - ูู ุงูู Life Cycle ุจุชุงุนุช ุงูู Classุ ุงูู static variable ุจูุชู ุชููุฆุชู ู ุฑุฉ ูุงุญุฏุฉ ุจุณุ ุฃู ุง ุงูู instance variables ุจูุชู ุชููุฆุชูุง 0 ู ุฑุฉ ูู ู ุง ุนู ููุงุด ุฃู instanceุ ู n ู ุฑุฉ ูู ุนู ููุง n ู ู ุงูู instances.
Instance/Non-Static Variables in C# ุงูู Scope ุจุชุงุน ุงูู Instance Variable: ุจูุจูู ู ูุฌูุฏ ูู ูู ุงูู Class ู ุง ุนุฏุง ูู ุงูู static methods. ุงูู lifetime ุจุชุงุน ุงูู Instance Variable: ุจููุถู ู ูุฌูุฏ ูุญุฏ ู ุง ุงูู Object ุงููู ูู ุฌุฒุก ู ูู ููุถู ู ูุฌูุฏ ูู ุงูู Memory.
Static Variables in C# ุงูู Scope ุจุชุงุน ุงูู Static Variable: ุจูุจูู ู ูุฌูุฏ ูู ุงูู Class ูููุง. ุงูู Lifetime ุจุชุงุน ุงูู Static Variable: ุจููุถู ู ูุฌูุฏ ูุญุฏ ู ุง ุงูุจุฑูุงู ุฌ ููู ูุฎูุต ุชูููุฐู.
Constant Variables in C#
- ูู ู
ุด ุนุงูุฒ ุญุฏ (ุฃู ุญุชู ุฃูุช ููุณู) ูุบูุฑ ุงูููู
ุฉ ุงูู
ูุฌูุฏุฉ ูู Variableุ ู
ู
ูู ุชุฒูุฏ ููู
ุฉ
constูุจู ููุน ุงูู Variable.
const int myNum = 15; // Declare a constant integer variable
myNum = 20; // This will cause an error: Cannot assign to 'myNum' because it is a constantNote: ู ุด ู ู ูู ุชุนุฑู Variable
constู ู ุบูุฑ ู ุง ุชุฏู ูู ููู ุฉ ูู ููุณ ุงูููุช. ูู ุนู ูุช ูุฏูุ ููุญุตู Error:A const field requires a value to be provided.
ูู C#ุ ูู ุนุฑููุง Variable ุจุงุณุชุฎุฏุงู
ุงูู keyword ุงููู ุงุณู
ู constุ ูุจูู ุฏู constant variable ูููู
ุฉ ุงูู constant variable ุฏู ู
ุด ู
ู
ูู ุชุชุนุฏู ุจุนุฏ ู
ุง ูุชู
ุชุนุฑูููุง. ุนุดุงู ูุฏูุ ูุงุฒู
ุฅุฌุจุงุฑู ุชุนู
ู ุชููุฆุฉ (initialize) ููู constant variable ููุช ุงูุชุนุฑูู ุจุชุงุนู. ูู ุนุงูุฒ ุชุนุฑู ุงูู constant PI ูู ุจุฑูุงู
ุฌูุ ู
ู
ูู ุชุนุฑูู ูุงูุชุงูู:
const float PI = 3.14f;
ูู ู ุง ุนู ูุชุด ุชููุฆุฉ ููู const variable ููุช ุงูุชุนุฑูู ุจุชุงุนูุ ููุฌููู Compiler error.
Note: ุงูู constant variables ุจูุชู ุนู ููุง ู ุฑุฉ ูุงุญุฏุฉ ุจุณ. ูููุ ูุฃู ููู ุชูุง ู ุด ู ู ูู ุชุชุบูุฑ ุจุนุฏ ุชุนุฑูููุงุ ููู ุณู ุญูุง ูุนู ู ูุณุฎ ูุชูุฑ ู ู ุงูู constant variableุ ูู ุงููุณุฎ ุฏู ูุชุฎุฒู ููุณ ุงูููู ุฉ ูุฏู ูุนุชุจุฑ ุงุณุชููุงู ููู Memory ุนูู ุงููุงุถู. ููู ุง ุชููู ุงูููู ุฉ ู ุด ูุชุชุบูุฑุ ุนู ู ูุณุฎ ูุชูุฑ ูู ุงุณุชููุงู ููู ูุงุฑุฏ ุนูู ุงููุงุถู.
ุณููู ุงูู constant variable ุดุจู ุณููู ุงูู static variablesุ ูุนูู ุจูุชู ุชููุฆุชูุง ู ุฑุฉ ูุงุญุฏุฉ ุจุณ ูู ุงูู Life Cycle ุจุชุงุนุช ุงูู Classุ ูู ุด ุจุชุญุชุงุฌ instance ู ู ุงูู Class ูุง ููุชููุฆุฉ ููุง ููุชูููุฐ. ุนุดุงู ุชููู ุฃูุชุฑุ ุจุต ุนูู ุงูู Example ุฏู.
using System;
namespace TypesOfVariables
{
internal class Program
{
const float PI = 3.14f; // Constant Variable
static int x = 100; // Static Variable
//We are going to initialize variable y through constructor
int y; // Non-Static or Instance Variable
//Constructor
public Program(int a)
{
//Initializing non-static variable
y = a;
}
static void Main(string[] args)
{
//Accessing the static variable without instance
Console.WriteLine($"x value: {x}"); // x is 100
//Accessing the constant variable without instance
Console.WriteLine($"PI value: {PI}"); // PI is 3.14
Program obj1 = new Program(300); // Create obj1, y=300
Program obj2 = new Program(400); // Create obj2, y=400
//Accessing Non-Static variable using instance
Console.WriteLine($"obj1 y value: {obj1.y}");
Console.WriteLine($"obj2 y value: {obj2.y}");
Console.Read();
}
}
}Output:
x value: 100
PI value: 3.14
obj1 y value: 300
obj2 y value: 400
ุงูู Diagram ุงููู ุฌุงู ุจููุถุญ ุงูู Memory representation ููู Example ุงููู ููู.
ู
ู
ูู ูุฌููู ุณุคุงู ุฏูููุชูุ ูู ุงูุงุชููู (static ู constant) ุจูุชุตุฑููุง ุจููุณ ุงูุทุฑููุฉุ ุฅูู ุงููุฑู ุจูููู
ุ
Difference Between Static and Constant Variable in C#
ุงููุฑู ุงููุญูุฏ ุจูู ุงูู static ูุงูู constant variable ูู ุฅู ุงูู static variables ู
ู
ูู ุชุชุนุฏู ุจุนุฏ ุชููุฆุชูุงุ ุฃู
ุง ุงูู constant variables ูู C# ู
ุด ู
ู
ูู ุชุชุนุฏู ุฎุงูุต ุจุนุฏ ู
ุง ูุชู
ุชุนุฑูููุง (ูุชููุฆุชูุง). ุชุนุงู ูุซุจุช ุฏู. ูู ุงูู Example ุงููู ุชุญุชุ ุฌูู ุงูู Main methodุ ุจูุญุงูู ูุนุฏู ููู
ุฉ ุงูู static x ูุงูู constant PI.
using System;
namespace TypesOfVariables
{
internal class Program
{
const float PI = 3.14f; // Constant Variable
static int x = 100; // Static Variable
int y; // Non-Static or Instance Variable
//Constructor
public Program(int a)
{
//Initializing non-static variable
y = a;
}
static void Main(string[] args)
{
Console.WriteLine($"x value: {x}");
Console.WriteLine($"PI value: {PI}");
x = 700; // Modifying Static Variable - Allowed
// PI = 3.15f; // Trying to Modify the Constant Variable - Compile Error!
Console.WriteLine($"x value after modification: {x}"); // x is now 700
Program obj1 = new Program(300);
Program obj2 = new Program(400);
Console.WriteLine($"obj1 y value: {obj1.y}");
Console.WriteLine($"obj2 y value: {obj2.y}");
Console.Read();
}
}
}ูู ุง ุชุญุงูู ุชุดุบู ุงูู Code ุงููู ููู ุฏูุ ููุฌููู Compilation Error.
ุงูู Error ุฏู ุจูููู ุตุฑุงุญุฉู ุฅู ุงูู left-hand side ุจุชุงุน ุงูู assignment ูุงุฒู ูููู Variable, property ุฃู indexer. ููู ููุง ูู constantุ ูุจุงูุชุงูู ุจูุฌูููุง compilation error.
Read-Only Variables in C#
ูู
ุง ุจูุนุฑู Variable ุจุงุณุชุฎุฏุงู
ุงูู keyword ุงููู ุงุณู
ู readonlyุ ุจูุจูู ุงุณู
ู read-only variable. ุงูู Variables ุฏู ู
ุด ู
ู
ูู ุชุชุนุฏู ุฒู ุงูู constants ุฅูุง ุจุนุฏ ุงูุชููุฆุฉ. ุฏู ู
ุนูุงู ุฅูู ู
ุด ุฅุฌุจุงุฑู ุชุนู
ู ุชููุฆุฉ (initialize) ููู read-only variable ููุช ุชุนุฑูููุ ู
ู
ูู ูู
ุงู ูุชู
ุชููุฆุชู ุฌูู ุงูู constructor. ูุนูู ููุฏุฑ ูุนุฏู ููู
ุฉ ุงูู read-only variable ููุท ุฌูู ุงูู constructor.
ุณููู ุงูู read-only variables ุจูุจูู ุดุจู ุณููู ุงูู non-static variables ูู C#ุ ูุนูู ุจูุชู ุชููุฆุชูุง ุจุณ ุจุนุฏ ู ุง ูุนู ู instance ู ู ุงูู Classุ ูู ุฑุฉ ูุงุญุฏุฉ ููู instance ุจูุชุนู ู. ุฏู ู ุนูุงู ุฅููุง ู ู ูู ูุนุชุจุฑูุง non-static variableุ ูุนุดุงู ููุตู ููู readonly variables ู ุญุชุงุฌูู instance.
Example to Understand Read-Only Variables in C#
ูู ุงูู Example ุงููู ุชุญุชุ ุงูู read-only variable z ู
ุด ู
ุชุณูุฏููุง ุฃู ููู
ุฉ ููุช ุงูุชุนุฑููุ ููู ูู
ุง ูุทุจุน ููู
ุชูุงุ ุงูู default value ุจุชุงุนุช ุงูู int ุงููู ูู 0 ููุชู
ุนุฑุถูุง.
using System;
namespace TypesOfVariables
{
internal class Program
{
const float PI = 3.14f; // Constant Variable
static int x = 100; // Static Variable
//We are going to initialize variable y through constructor
int y; // Non-Static or Instance Variable
readonly int z; // Readonly Variable - not initialized here
//Constructor
public Program(int a)
{
y = a;
// z is not initialized here, will take default value (0 for int)
}
static void Main(string[] args)
{
Console.WriteLine($"x value: {x}");
Console.WriteLine($"PI value: {PI}");
Program obj1 = new Program(300); // Create obj1, y=300
Program obj2 = new Program(400); // Create obj2, y=400
// Accessing Non-Static and Readonly variables using instance
Console.WriteLine($"obj1 y value: {obj1.y} and Readonly z value: {obj1.z}"); // z will be 0
Console.WriteLine($"obj2 y value: {obj2.y} and Readonly z value: {obj2.z}"); // z will be 0
Console.Read();
}
}
}Output:
x value: 100
PI value: 3.14
obj1 y value: 300 and Readonly z value: 0
obj2 y value: 400 and Readonly z value: 0
ูู ุงูู Example ุงููู ุฌุงูุ ุจูููุฆ ุงูู readonly variable ุนู ุทุฑูู ุงูู Class constructor. ุงูู constructor ุฏู ููุงุฎุฏ ุงุชููู parameters. ุงูู parameter ุงูุฃูู ููููุฆ ุงูู non-static variableุ ูุงูู parameter ุงูุชุงูู ููููุฆ ุงูู readonly variable. ูุจููุ ููุช ุนู ู ุงูู instanceุ ู ุญุชุงุฌูู ูู ุฑุฑ ููู ุชูู integer ููู constructor function.
using System;
namespace TypesOfVariables
{
internal class Program
{
const float PI = 3.14f; // Constant Variable
static int x = 100; // Static Variable
//We are going to initialize variable y through constructor
int y; // Non-Static or Instance Variable
readonly int z; // Readonly Variable
//Constructor takes two parameters
public Program(int a, int b)
{
//Initializing non-static variable
y = a;
//Initializing Readonly variable using constructor
z = b;
}
static void Main(string[] args)
{
Console.WriteLine($"x value: {x}");
Console.WriteLine($"PI value: {PI}");
Program obj1 = new Program(300, 45); // Create obj1, y=300, z=45
Program obj2 = new Program(400, 55); // Create obj2, y=400, z=55
// Accessing Non-Static and Readonly variables using instance
Console.WriteLine($"obj1 y value: {obj1.y} and Readonly z value: {obj1.z}");
Console.WriteLine($"obj2 y value: {obj2.y} and Readonly z value: {obj2.z}");
Console.Read();
}
}
}Output:
x value: 100
PI value: 3.14
obj1 y value: 300 and Readonly z value: 45
obj2 y value: 400 and Readonly z value: 55
ุนุดุงู ุชููู ุฃูุชุฑ ุงูู Example ุงููู ูููุ ุจุต ุนูู ุงูู Diagram ุฏู ุงููู ุจููุถุญ ุงูู Memory representation.
graph LR A[Program Class] --> B(Static Variable x: 100); A --> C(Constant Variable PI: 3.14); A --> D[Instance 1: obj1]; D --> E(Non-Static Variable y: 300); D --> F(Readonly Variable z: 45); A --> G[Instance 2: obj2]; G --> H(Non-Static Variable y: 400); G --> I(Readonly Variable z: 55);
ุฏูููุชู ู ู ูู ูุฌููู ุณุคุงู ุชุงููุ ูู ุงูู non-static ูุงูู readonly ุงูุงุชููู ุจูุชุตุฑููุง ุจููุณ ุงูุทุฑููุฉุ ุฅูู ุงููุฑู ุจูููู ุ
Difference Between Non-Static and Readonly in C#
ุงููุฑู ุงููุญูุฏ ุจูู ุงูู non-static ูุงูู readonly variable ูู ุฅูู ุจุนุฏ ุงูุชููุฆุฉุ ุชูุฏุฑ ุชุนุฏู ููู
ุฉ ุงูู non-static variableุ ููู ู
ุด ู
ู
ูู ุชุนุฏู ููู
ุฉ ุงูู readonly variable. ุชุนุงู ูุซุจุช ุฏู. ูู ุงูู Example ุงููู ุชุญุชุ ุจุนุฏ ู
ุง ุนู
ููุง ุงูู instance ุงูุฃููุงููุ ุจูุญุงูู ูุนุฏู ููู
ุฉ ุงูู non-static y ูุงูู readonly z.
using System;
namespace TypesOfVariables
{
internal class Program
{
const float PI = 3.14f; // Constant Variable
static int x = 100; // Static Variable
//We are going to initialize variable y through constructor
int y; // Non-Static or Instance Variable
readonly int z; // Readonly Variable
//Constructor takes two parameters
public Program(int a, int b)
{
//Initializing non-static variable
y = a;
//Initializing Readonly variable
z = b;
}
static void Main(string[] args)
{
Console.WriteLine($"x value: {x}");
Console.WriteLine($"PI value: {PI}");
Program obj1 = new Program(300, 45); // Create obj1, y=300, z=45
// Accessing Non-Static and Readonly variables using instance
Console.WriteLine($"obj1 y value: {obj1.y} and Readonly z value: {obj1.z}");
obj1.y = 500; // Modifying Non-Static Variable - Allowed
// obj1.z = 400; // Trying to Modify Readonly Variable - Compile Error!
Console.WriteLine($"obj1 y value after modification: {obj1.y}"); // y is now 500
Console.Read();
}
}
}ูู ุง ุชุญุงูู ุชุดุบู ุงูู Code ุงููู ููู ุฏูุ ููุฌููู Compilation Error.
ุงูู Error ุฏู ุจูููู ุตุฑุงุญุฉู ุฅู ุงูู readonly field ู ุด ู ู ูู ูุชู ุฅุณูุงุฏ ููู ุฉ ููู (ู ุง ุนุฏุง ูู ุงูู constructor ุฃู ุงูู init-only setter ุจุชุงุน ุงูู Type ุงููู ุงูู field ู ุชุนุฑู ููู ุฃู ูู ุงูู variable initializer). ุฏู ู ุนูุงู ุฅูู ุชูุฏุฑ ุชุนู ู ุชููุฆุฉ ููู readonly variable ุจุณ ููุช ุชุนุฑููู ุฃู ุนู ุทุฑูู ุงูู constructor. ูููุงุ ุจูุญุงูู ูุนุฏู ููู ุฉ ุงูู readonly ุฌูู ุงูู Main method ูุฏู ุณุจุจ ุงูู compilation error.
What is the difference between a constant and readonly variable in C#?
ุงููุฑู ุจูู ุงูู constant ูุงูู readonly variable ูู C# ูู ุฅู ุงูู constant ูู ููู ุฉ ุซุงุจุชุฉ ููู ุงูู Class ูููุง (ู ุด ู ุฑุชุจุทุฉ ุจู instance ู ุนูู)ุ ุฃู ุง ุงูู readonly ูู ููู ุฉ ุซุงุจุชุฉ ุฎุงุตุฉ ุจู instance ู ุนูู ู ู ุงูู Classุ ูููู instance ุจูุชู ุนู ูู.
Local Variables in C#
ุงูู Local Variables ูู C# ุจุชุชุนุฑู ุฌูู ุงูู Method ุจุชุงุนุช ุงูู Class. ุงูู Scope ุจุชุงุน ุงูู local variable ู ุญุฏูุฏ ุจุงูู Method ุงููู ุงุชุนุฑูุช ุฌูุงูุ ุฏู ู ุนูุงู ุฅูู ู ุด ู ู ูู ุชูุตููุง ู ู ุจุฑู ุงูู Method ุฏู. ุชููุฆุฉ (initialization) ุงูู local variable ุฅุฌุจุงุฑู.
Scope ุจุชุงุน ุงูู Local Variables: ุจูุจูู ู
ูุฌูุฏ ุฌูู ุงูู block (ุงูููุณูู {}) ุงููู ุงุชุนุฑู ููู ุจุณ.
The lifetime ุจุชุงุน ุงูู Local Variable: ุจููุถู ู
ูุฌูุฏ ูุญุฏ ู
ุง ุงูู control ุจุชุงุน ุงูุจุฑูุงู
ุฌ ูุฎุฑุฌ ู
ู ุงูู block ุงููู ุงุชุนุฑู ููู.
Example to Understand Local Variables in C#
using System;
namespace TypesOfVariables
{
internal class Program
{
static void Main(string[] args)
{
// This is a static block (static method)
int y = 100; // Local Variable 'y'. By default static because in static block.
// Scope limited to Main method.
Console.WriteLine(y); // Can access y here
Console.Read();
}
public void NonStaticBlock()
{
// This is a non-static block (non-static method)
int x = 100; // Local Variable 'x'. By default non-static.
// Scope limited to NonStaticBlock method only.
Console.WriteLine(x); // Can access x here
}
// Cannot access x or y here, they are out of scope
}
}Special Variable Types
ุจุงูุฅุถุงูุฉ ููุฃููุงุน ุงูุฃุณุงุณูุฉ ุงููู ุงุชููู
ูุง ุนููุง (Static, Non-Static, Const, Readonly, Local)ุ ููู ุฃููุงุน ุชุงููุฉ ุจุชุณุชุฎุฏู
ูู C# ูููุง ุณููู ู
ุฎุชูู ููู var, object, ู dynamic.
var (Implicit Typed Variable)
-
ุฅุฒุงู ุดุบุงููุ ุจุชุฏููุง ููู ุฉ ุฃูููุฉุ ูุงูู Compiler ูู ุงููู ูุญุฏุฏ ููุนูุง ุฃูุชูู ุงุชูู ู ู ุงูููู ุฉ ุฏู. ุฃูุช ู ุด ุจุชุญุฏุฏู. ู ุซุงู:
var x = 10;โ ุงูู Type ููุง ุจููint.var y = "Hello";โ ุงูู Type ููุง ุจููstring. -
Rules:
- ู
ุด ู
ู
ูู ุชุนูููุง ู
ู ุบูุฑ ู
ุง ุชุฏูููุง ููู
ุฉ ุฃูููุฉ.
โ ๏ธ
var x;โ ุบูุท! - ู
ุด ู
ู
ูู ุชุฏูููุง
nullูู ุงูุจุฏุงูุฉ. โ ๏ธvar z = null;โ ุบูุท! - ุงูู Type ุจูุชุญุฏุฏ ู ุฑุฉ ูุงุญุฏุฉ ูู (Compile Time) ูู ุชูุฏุฑุด ุชุบูุฑู ุจุนุฏ ูุฏู. ู ุซุงู:
var x = 5; // x is implicitly typed as int x = "Ahmed"; // Error: Cannot implicitly convert type 'string' to 'int' - ู
ุด ู
ู
ูู ุชุนูููุง ู
ู ุบูุฑ ู
ุง ุชุฏูููุง ููู
ุฉ ุฃูููุฉ.
โ ๏ธ
-
ูุงุฒู ุชุณุชุฎุฏู ูุง ูููุ
- ูู ุงูู Type ุงุณู ู ุทููู (ู ุซูุงู ูู ุงูู LINQ ุฃู ู ุน Lambda Expressions in Csharp).
- ูู ุง ุชููู ุนุงูุฒ ุชููุฏ ุฃุณุฑุน ู ู ุบูุฑ ู ุง ุชูุชุจ ููุน ุงูู ุชุบูุฑ ููู.
-
ู ูุญูุธุฉ:
- ุงูู
varู ุด ููุน ุฌุฏูุฏ! ุฏู ู ุฌุฑุฏ ุงุฎุชุตุงุฑ ุจูุณูู ุงููุชุงุจุฉ. - ุงูู Variable ุจูุจูุง ูู ููุน ุซุงุจุช (Strongly Typed) ู ู ุฃูู ู ุง ูุชุญุฏุฏ ูู ุงูู Compile Time.
- ุงุณุชุฎุฏุงู ู ู ู ูู ูุจูุง ุจุณูุท ุฃูู ุจุณ ุจุฑุถู ู ู ูู ูุฃุซุฑ ุนูู ูุฑุงุกุฉ ุงูู Code ูู ู ุด ูุงุถุญ ุงูููุน.
- ุงูู
object
ุงุชููู ูุง ุนูู ุจุงูุชูุตูู ูู ุงูู Object
-
ุฅุฒุงู ุดุบุงููุ ุงูู
objectูู ุงูู base type ุฃู ุฃุจู ูู ุงูู Types ูู C#. ุฃู ุญุงุฌุฉ ุชูุฏุฑ ุชุญุทูุง ููู (ูุฃู ูู ุงูู Types ู ุจููุฉ ุนููู ุฃู ุจุชูุฑุซ ู ูู).- ู
ูุญูุธุฉ ู
ูู
ุฉ: ูู ุญุทูุช ููู ููู
ุฉ ู
ู ููุน ุจุณูุท (value type) ุฒู ุงูู
intุฃู ุงููdoubleุ ุงูู Compiler ููุญูููุง ูู reference type (ุงูุนู ููุฉ ุฏู ุงุณู ูุง Boxing). ู ุซุงู:
object x = 5; // ููุง ุงูู5 (ุงูููู ุฉ) ุงุชุญููุช ูู object ูุงุชุฎุฒูุช ูู ุงูู Heap - ู
ูุญูุธุฉ ู
ูู
ุฉ: ูู ุญุทูุช ููู ููู
ุฉ ู
ู ููุน ุจุณูุท (value type) ุฒู ุงูู
-
ุนููุจู:
- ูู ุนุงูุฒ ุชุณุชุฎุฏู
ุงูููู
ุฉ ุงููู ุฌูุงูุ ูุงุฒู
ุชุญูููุง ูู ููุนูุง ุงูุฃุตูู (ุงูุนู
ููุฉ ุฏู ุงุณู
ูุง Unboxing).
ู
ุซุงู:
int y = (int)x; // Casting back to int (Unboxing) - ูู ุนู ูุช Casting ูููุน ุบูุท โ ููุญุตู ุบูุท ูู ุงูุฑู ุชุงูู (Runtime Error).
- ุฃุจุทุฃ ูู ุงูุฃุฏุงุก ุจุณุจุจ ุนู ููุงุช ุงูู Boxing ูุงูู Casting.
- ูู ุนุงูุฒ ุชุณุชุฎุฏู
ุงูููู
ุฉ ุงููู ุฌูุงูุ ูุงุฒู
ุชุญูููุง ูู ููุนูุง ุงูุฃุตูู (ุงูุนู
ููุฉ ุฏู ุงุณู
ูุง Unboxing).
ู
ุซุงู:
-
ู ู ูุฒุงุชู:
- ู ุฑู ุฌุฏุงู. ุชูุฏุฑ ุชุฎุฒู ุฃู ุญุงุฌุฉ ููู.
dynamic
-
ุฅุฒุงู ุดุบุงููุ ุงูู
dynamicุฏู ููุน ุงูู Type ุจุชุงุนู ุจูุชุญุฏุฏ ูู ุงูุฑู ุชุงูู (Run Time). ุงูู Compiler ู ุด ุจููุญุตู ุฃุซูุงุก ูุชุงุจุฉ ุงูู Code. ู ุซุงู:dynamic x = 10; // Type is dynamic, not checked at compile time x = "Ahmed"; // Type can change at runtime, no problem -
ู ู ูุฒุงุชู:
- ุณูู ู ุน ุงูุญุงุฌุงุช ุงูุฏููุงู ูููุฉ (ู ุซู ุงูู COM Interop ุฃู ุงูู APIs ุงูุฎุงุฑุฌูุฉ ุงููู ุจุชุฑุฌุน ุฃููุงุน ู ุด ู ุนุฑููุฉ ู ุณุจูุงู).
- ู ุด ู ุญุชุงุฌ ุชุนู ู Casting ุจููุณู.
-
ุนููุจู:
- ู ุด ุขู ู (Not Type Safe): ุฃู ุบูุท ูู ุงูู Type ูุชูุชุดูู ููุท ูู ุง ุงูุจุฑูุงู ุฌ ูุดุชุบู.
- ุฃูู ุฃุฏุงุกู ูุฅู ุงูุชุญูู ู ู ุงูู Type ุจูุญุตู ูู ุงูู Run Time ุจุฏู ุงูู Compile Time.
ุงููุฑููุงุช ุงูุฃุณุงุณูุฉ ุจูููู
(var, object, dynamic)
| Feature | var | object | dynamic |
|---|---|---|---|
| ููุช ุชุญุฏูุฏ ุงูููุน | (Compiler) Compile Time | Compile Time (ููู ู ุน Boxing) | (CLR) Run Time |
| Type Safety | ุขู ู (ุงูููู ุจุงููุฑ ุจูุดูู) | ุบูุฑ ุขู ู (ู ุญุชุงุฌ Casting) | ุบูุฑ ุขู ู (ุบูุท ูู ุงูุฑู ุชุงูู ) |
| ุงูุฃุฏุงุก | ุณุฑูุน (ุนุงุฏู ุฒู ุฃู ููุน) | ุจุทูุก (ุจุณุจุจ Boxing/Unboxing) | ู ุชูุณุท (ูุฃูู ุฏููุงู ููู) |
| ุงูู ุฑููุฉ | ู ุญุฏูุฏ (ุงูููุน ุจูุชุญุฏุฏ ู ุฑุฉ ูุงุญุฏุฉ) | ุนุงูู (ุชูุฏุฑ ุชุฎุฒู ุฃู ุญุงุฌุฉ) | ุนุงูู ุฌุฏุงู (ุงูุชุบููุฑ ูู ุงูุฑู ุชุงูู ) |
ุฃู
ุซูุฉ ุนู
ููุฉ ุนูู var, object, dynamic
// var
var name = "Mohamed"; // name is implicitly typed as string
var age = 25; // age is implicitly typed as int
// object
object obj1 = 10; // Boxing happening here (int 10 is boxed into an object)
object obj2 = "Test"; // string "Test" is treated as an object
int num = (int)obj1; // Unboxing (object is cast back to int)
// dynamic
dynamic dyn = 10; // Type is dynamic
dyn = "Text"; // Type can change at runtime, no problem
dyn = dyn.ToUpper(); // If dyn is not a string at this point, this will be a runtime errorConclusion
ูุฏู ุดุฑุญูุง ุงูู Variables ูู C# ุจุฃููุงุนูุง ุงูู
ุฎุชููุฉ ูุฅู
ุชู ุชุณุชุฎุฏู
ูู ููุน. ู
ู ุฃูู ุงูุฃููุงุน ุงูุฃุณุงุณูุฉ ุฒู ุงูู Static ูุงูู Non-Static ูุงูู Const ูุงูู Readonly ูุงูู Local Variablesุ ูุญุฏ ุงูุฃููุงุน ุงูุฎุงุตุฉ ุฒู var, object, ู dynamic.