C# Tutorial

C# Tutorial C# First Application C# Variables C# Data Types C# Operators C# Keywords

C# Control Statement

C# If Statements C# Switch Statements C# for Loop C# While Loop C# do While loop C# Jump Statements C# Function C# functions with out variable

C# Arrays

C# Arrays

C# Function

C# Function call by value C# Call by reference C# Passing array to function C# Multidimensional Arrays C# Jagged Arrays C# Params C# Array Class C# Command Line Arguments

C# Object Class

C# Object and Classes C# Constructors C# Destructor C# this Keyword C# static field C# static class C# Static Constructor C# Structs C# enum C# Properties

C# Inheritance

C# Inheritance C# Multilevel Inheritance C# Aggregation C# Member overloading C# Method Overriding C# Base

C# Polymorphism

C# Polymorphism C# Sealed

C# Abstraction

C# Abstraction C# Interface

C# Namespace

C# Namespace C# Access Modifiers C# Encapsulation

C# Strings

C# String

C# Misc

C# Design Patterns Dictionary in C# Boxing and Unboxing in C# Ref and Out in C# Serialization in C# Dispose and Finalize in C# CONSOLE LOG IN C# Get File extension in C# Insert query in c# Difference Between List and Dictionary in C# Getters and Setters in C# Extension Methods in C# Insert query in c# CONSOLE LOG IN C# Get File extension in C# Random.NextDouble() Method in C# Binary Search in C# Difference between Delegates and Interfaces in C# Double.IsFinite() Method in C# Index Constructor in C# Abstraction in C# Basic OOPS Concepts In C# Queue.CopyTo() Method in C# single.compareto() method in C# C# Throw Exception in Constructor DECODE IN C# file.setlastwritetimeutc() method in C# Convert Object to List in C# convert.ToSByte(string, IFormatProvider) Method in C# C# Declare Delegate in Interface console.TreatControl C As Input property in C# Copying the queue elements to 1-D Array in C# Array.Constrainedcopy() Method in C# C# in and out Char.IsLetterOrDigit() method in C# Debugging in C# decimal.compare() method in C# Difference between Console.Read and Console.Readline in C# Metadata in C# C# Event Handler Example Default Interface Methods in C# Difference between hashtable and dictionary in C# C# program to implement IDisposable Interface Encapsulation in C# SortedList.IndexOfVaalue(Object) Method in C# Hash Maps in C# How to clear text files in C# How to Convert xls to xlsx in C# Foreach loop in C# FIFO in C# How to handle null exception in C# Type.Is Instance Of Type() Method in C# How to add data into MySQL database using C# How to use angular js in ASP net Csharp decimal.compare() method in Csharp Difference between Console.Read and Console.Readline in Csharp How to Implement Interface in Csharp char.IsUpper() Method in C# Index Of Any() Method in C# Quantifiers in C# C# program to Get Extension of a Given File C# Error Logging C# ENCRIPTION Can we create an object for Abstract Class in C# Console.CursorVisible in C# SortedDictionary Implementation in C# C# Hash Table with Examples Setting the Location of the Label in c# Collections in c# Virtual Keyword in C# Reverse of string in C# String and StringBuilder in C# Encapsulation in C# SortedList.IndexOfVaalue(Object) Method in C# Hash Maps in C# How to clear text files in C# How to Convert xls to xlsx in C# Foreach loop in C# FIFO in C# How to handle null exception in C# Type.Is Instance Of Type() Method in C# How to add data into MySQL database using C# How to use angular js in ASP net Csharp decimal.compare() method in Csharp Difference between Console.Read and Console.Readline in Csharp How to Implement Interface in Csharp char.IsUpper() Method in C# Index Of Any() Method in C# Quantifiers in C# C# program to Get Extension of a Given File Difference between ref and out in C# Singleton Class in C# Const And Readonly In Csharp BinaryReader and BinaryWriter in C# C# Attributes C# Delegates DirectoryInfo Class in C# Export and Import Excel Data in C# File Class in C# FileInfo Class in C# How to Cancel Parallel Operations in C#? Maximum Degree of Parallelism in C# Parallel Foreach Loop in C# Parallel Invoke in C# StreamReader and StreamWriter in C# TextReader and TextWriter in C# AsQueryable() in C# Basic Database Operations Using C# C# Anonymous Methods C# Events C# Generics C# Indexers C# Multidimensional Indexers C# Multithreading C# New Features C# Overloading of Indexers Difference between delegates and events in C# Operator overloading in C# Filter table in C# C# Queue with Examples C# Sortedlist With Examples C# Stack with Examples C# Unsafe Code File Handling in C# HashSet in C# with Examples List Implementation in C# SortedSet in C# with Examples C# in Depth Delegates and Events in C# Finally Block in C# How to Split String in C# Loggers in C# Nullable Types in C# REVERSE A STRING IN C# TYPE CASTING IN C# What is Generics in C# ABSTRACT CLASS IN C# Application of pointer in C# Await in c# READONLY AND CONSTANT IN C# Type safe in C# Types of Variables in c# Use of delegates in c# ABSTRACT CLASS IN C# Application of pointer in C# Await in c# READONLY AND CONSTANT IN C# Type safe in C# Types of Variables in c# Use of delegates in c# ABSTRACT CLASS IN C# Application of pointer in C# Await in c# READONLY AND CONSTANT IN C# Type safe in C# Types of Variables in c# Use of delegates in c# Atomic Methods Thread Safety and Race Conditions in C# Parallel LINQ in C# Design Principles in C# Difference Between Struct And Class In C# Difference between Abstraction and Encapsulation in C# Escape Sequence Characters in C# What is IOC in C# Multiple Catch blocks in C# Appdomain in C# Call back methods in C# Change Datetime format in C# Declare String array in C# Default Access Specifier in c# Foreach in LINQ C# How to compare two lists in C# How to Convert String to Datetime in c# How to get only Date from DateTime in C# Ispostback in asp net C# JSON OBJECT IN C# JSON STRINGIFY IN C# LAMBDA FUNCTION IN C# LINQ Lambda Expression in C# Microservices in C# MSIL IN C# Reference parameter in C# Shadowing(Method hiding) in C# Solid principles in C# Static Members in C# Task run in C# Transaction scope in C# Type Conversion in c# Unit of Work in C# Unit Test Cases in c# User Defined Exception in c# Using Keyword in C# Var Keyword in C# What is gac in C#

Const And Readonly In Csharp

The immutable values that were known at the time of programme compilation and remain unchanged during the duration of the programme are known as constant variables.

Although the values of the read-only variables can't be changed once they are known at runtime, they are also immutable.

Constant Variables in C#:

A variable in C# is considered a constant if the const keyword is used to declare it, and a constant variable's value cannot be changed once it has been declared. Therefore, initialising the constant variable is required only at the moment of declaration.

Let's say your software calls for the declaration of a constant PI. Once that is done, declare the constant variable as follows:

const float pi=3.14f;

Important point to be remembered while declaration of const variables:

  • There will be only one creation of the constant variables. This is the case because, once defined, the constant values are immutable.
  • If it enables the creation of many copies of the constant variable, all those copies will have the same data, resulting in a memory waste. Therefore, it is a waste of resources when we cannot change a value and when we create the same copy more than once.
  • Constant variables behave similarly to static variables in that they are initialised only once over the life of a class and do not need an instance of the class to be initialised or used.
  • In order to construct a "constant" variable, the term const is used. It implies that a variable will be created whose value will never change. In layman's terms, a constant variable is one whose value cannot be altered or changed more than once after its declaration.
  • Constants are static by default.
  • When a constant variable is declared, it needs to be initialised.
  • A constant variable behaves in the same way as a static variable, meaning that it only keeps one copy during the class's lifetime and initializes right away once class execution begins (an object is not necessary).

EXAMPLE:

using System;
namespace ConstDemo
{
class Constant
{
//At the moment the const variable is declared,
//we must give it a value
//a compile-time error will occur.
const float pi = 3.14f;
static void Main(string[] args)
{
Console.WriteLine(Constant.pi);
//Within the same class, we can also directly access them.
Console.WriteLine(pi);
//A constant variable may also be declared inside a function
const int n = 4;
Console.WriteLine(n);
//A constant variable's value cannot be changed after it has been declared. Thus, the line below has an error.
Console.ReadLine();
}
}
}

OUTPUT:

Const And Readonly In C#

Readonly Variables in C#:

A read-only variable is one that has the readonly keyword used in its declaration and cannot be changed after initialization like a constant.

So, initialising a read-only variable is not required at the moment of declaration; it can also be done in the constructor. Therefore, we are only able to alter the value of the read-only variable within a constructor.

Since they are initialised just once for each instance of the class and only after the class is constructed, read-only variables function similarly to non-static variables in C#.

We can therefore think of it as a non-static variable, and an instance is required in order to access read-only variables.

Important points to be remembered while declaration of Readonly variables:

  • In C#, a read-only variable is a variable that was created with the readonly keyword. Once initialised, the read-only variable's value cannot be changed.
  • Similar to a constant, initialising a read-only variable is neither necessary or required at the moment of declaration. The read-only variables can be initialised inside of a constructor, but it's crucial to remember that once initialised, they cannot have their values changed outside of the constructor.
  • A read-only variable behaves similarly to a non-static variable in terms of behaviour. It does this by keeping a different copy for each object.
  • The read-only variable's value cannot be altered from outside the constructor body, whereas the non-static variable's value can, and that is the only difference between these two.

Example:

using System;
namespace ReadOnlyDemo
{
class Readonly
{
readonly int n = 10;
//Additionally, you can initialise the constructor.
public Readonly()
{
n = 4;
}
static void Main(string[] args)
{
Readonly obj = new Readonly();
Console.WriteLine(obj.n);
//The next sentence will result in a compile-time error.
//obj.number=4
Console.ReadLine();
}
}
}

Output:

Const And Readonly In C#

Explanation:

The read-only variable in the example above is initialised using the class constructors. The read-only variables can either be initialised directly at the time of declaration or indirectly through class constructors. In C#, read-only variables cannot have their value changed once it has been initialised.

Difference between Const and Read-only in C#:

ConstReadonly
Used for only const fields of creationUsed for only Readonly fields of creation
Compile-time usageRun-time usage
Values cand be alteredValues cannot be altered
Possible within the methodNot possible within the method
Compatible with static methodsCompatible with non-static methods