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;
}
}
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;
}
}