Showing posts with label Difference Between const and readonly. Show all posts
Showing posts with label Difference Between const and readonly. Show all posts

Thursday, November 12, 2009

Difference between const and readonly

The readonly keyword is different from the const keyword.

A const field can only be initialized at the time of declaration. It specifies that the value of the field or the local variable cannot be modified.
A readonly field or variable can be initialized either at the declaration or in a constructor in the same class. Therefore, readonly variable or fields can have different values depending on the constructor used. A static readonly field can be set at run time, so it can have a different value for different executions of the program. However, the value of a const field is set to a compile time constant.

A const field is a compile-time constant.
A readonly field is a runtime constant.

using System;

public class Test
{
public const int rows = 10; // Initialize a const field
public const int seats = rows + 25;
public const double size = 5.0, width = 72.5, height = 44.45;

public readonly int x = 30; // Initialize a readonly field
public readonly int y;

public Test()
{
y = 100; // Initialize a readonly instance field
}

public Test(int a, int b)
{
x = a;
y = b;
}
}