Const. This C# keyword indicates a constant. It describes an entity that cannot be changed at program runtime. Instead, the entity must be fully resolved at compile-time.
C# keyword notes. We cannot reassign a constant. With constants, we lose the ability to modify variables at runtime but we gain performance and compile-time validation.
An example. With const we pull constant values (such as strings or ints) into a part of the program that is easier for us to manage and edit. This improves program organization.
Tip When we compile const values, the values are inserted into the parts of the program that use them—there is no lookup overhead.
Part 1 The program accesses the _html constant string in 2 ways. We can read a constant in the same way as a static field.
Part 2 Here we show that a constant can be placed in the local scope, like a local variable.
Part 3 We cannot reassign consts in a program. This would result in a compile-time error.
using System;
class Program
{
const string _html = ".html";
static void Main()
{
// Part 1: access constant.
Console.WriteLine(_html);
Console.WriteLine(Program._html);
// Part 2: local constant.
const string txt = ".txt";
Console.WriteLine(txt);
// Part 3: invalid statements.// ... This causes a compile-time error.// _html = "";// ... This causes a compile-time error also.// txt = "";
}
}.html
.html
.txt
Left-hand side error. This is what happens when we try to mutate a constant value. We get a C# compile-time error. This program won't go far in life.
class Program
{
static void Main()
{
const int value = 10;
value = 20;
}
}Error CS0131
The left-hand side of an assignment must be a variable, property or indexer
Constant error. All parts of a constant expression must themselves be constant. So we cannot buildup a const from variables. No variables are allowed.
class Program
{
static void Main()
{
int size = 5;
const int value = 10 + size;
}
}Error CS0133
The expression being assigned to 'value' must be constant
Errors, notes. When refactoring, we may run into some errors related to constants. A compile-time error will occur if we try to assign constants at runtime after they are already assigned.
Tip To fix this error, either modify the constant to make it a variable, or remove the assignment.
Advantages. Constants promote the integrity of your programs by telling the compiler not to allow you to change the values during runtime. This should result in fewer accidental bugs.
Performance notes. Const may improve performance over variables in many cases, particularly when using types like int. It eliminates accesses to memory that occur with fields and locals.
Summary. Const is a reserved word. It specifies that a value is invariant and must not be modified after compile-time. Const values, like const strings, simplify and optimize programs.
Dot Net Perls is a collection of tested code examples. Pages are continually updated to stay current, with code correctness a top priority.
Sam Allen is passionate about computer languages. In the past, his work has been recommended by Apple and Microsoft and he has studied computers at a selective university in the United States.