const (Referencia de C#)
La palabra clave const
se usa para declarar un campo constante o una constante local. Los campos y locales constantes no son variables y no se pueden modificar. Las constantes pueden ser números, valores booleanos, cadenas o una referencia nula. No cree una constante para representar información que esperas que cambie en algún momento. Por ejemplo, no use un campo constante para almacenar el precio de un servicio, un número de versión de producto o el nombre comercial de una compañía. Estos valores pueden cambiar con el tiempo y, como los compiladores propagan las constantes, otro código compilado con sus bibliotecas tendrán que volver a compilarse para ver los cambios. Vea también la palabra clave readonly. Por ejemplo:
const int X = 0;
public const double GravitationalConstant = 6.673e-11;
private const string ProductName = "Visual C#";
A partir de C# 10, las cadenas interpoladas pueden ser constantes, si todas las expresiones utilizadas también son cadenas constantes. Esta característica puede mejorar el código que compila cadenas constantes:
const string Language = "C#";
const string Platform = ".NET";
const string FullProductName = $"{Platform} - Language: {Language}";
Observaciones
El tipo de una declaración constante especifica el tipo de los miembros que la declaración presenta. El inicializador de una constante local o de un campo constante debe ser una expresión constante que se pueda convertir implícitamente al tipo de destino.
Una expresión constante es una expresión que se puede evaluar por completo en tiempo de compilación. Por lo tanto, los únicos valores posibles para las constantes de tipos de referencia son cadenas y una referencia nula.
La declaración de constante puede declarar varias constantes, tales como:
public const double X = 1.0, Y = 2.0, Z = 3.0;
El modificador static
no se permite en una declaración de constante.
Una constante puede participar en una expresión constante, de la siguiente manera:
public const int C1 = 5;
public const int C2 = C1 + 100;
Nota:
La palabra clave readonly difiere de la palabra clave const
. Un campo const
solo se puede inicializar en la declaración del campo. Un campo readonly
se puede inicializar en la declaración o en un constructor. Por lo tanto, los campos readonly
pueden tener diferentes valores en función del constructor que se use. Además, aunque un campo const
es una constante en tiempo de compilación, el campo readonly
se puede usar para constantes en tiempo de ejecución, como en esta línea: public static readonly uint l1 = (uint)DateTime.Now.Ticks;
Ejemplos
public class ConstTest
{
class SampleClass
{
public int x;
public int y;
public const int C1 = 5;
public const int C2 = C1 + 5;
public SampleClass(int p1, int p2)
{
x = p1;
y = p2;
}
}
static void Main()
{
var mC = new SampleClass(11, 22);
Console.WriteLine($"x = {mC.x}, y = {mC.y}");
Console.WriteLine($"C1 = {SampleClass.C1}, C2 = {SampleClass.C2}");
}
}
/* Output
x = 11, y = 22
C1 = 5, C2 = 10
*/
En el ejemplo siguiente, se muestra cómo declarar una constante local:
public class SealedTest
{
static void Main()
{
const int C = 707;
Console.WriteLine($"My local constant = {C}");
}
}
// Output: My local constant = 707
Especificación del lenguaje C#
Para más información, vea las secciones siguientes de la Especificación del lenguaje C#: