2011-09-08 11 views
18

¿Hay una manera de utilizar algo como esto:recepción 'Expresión siendo asignado debe ser constante' cuando es

private const int MaxTextLength = "Text i want to use".Length; 

Creo que sería más fácil de leer y menos propenso a errores que usar algo como:

private const int MaxTextLength = 18; 

¿Hay alguna forma de que la longitud del texto sea la fuente de una variable constante?

+9

"variable constante"? – BoltClock

Respuesta

23
private readonly static int MaxTextLength = "Text i want to use".Length; 
12

Use static readonly en lugar de const.

constantes tienen que ser constantes de tiempo de compilación

+1

Pero la variable estática de solo lectura no funciona en la sentencia case. – MSTdev

5

Por desgracia, si está utilizando la palabra clave const el valor en el lado derecho de la '=' debe ser una constante en tiempo de compilación. El uso de una "cadena" .length requiere el código .NET para ejecutarse, lo que solo puede ocurrir cuando la aplicación se está ejecutando, no durante el tiempo de compilación.

Puede considerar hacer el campo de solo lectura en lugar de const.

0

No estoy seguro de por qué quiere hacer esto, pero ¿qué tal ...

private const string MaxText = "Text i want to use."; 

private static int MaxTextLength { get { return MaxText.Length; } } 
0

hace el valor tiene que ser una constante? ¿Funcionaría un solo de forma estática para su caso?

private static readonly int MaxTextLength = "Text i want to use".Length; 

Esto le permitirá escribir el código de manera similar a su primer ejemplo.

Cuestiones relacionadas