Error del compilador CS0134

Actualización: noviembre 2007

Mensaje de error

'variable' es del tipo 'tipo'. Un campo constante de un tipo de referencia distinto de String sólo se puede inicializar con null.
'variable' is of type 'type'. A const field of a reference type other than string can only be initialized with null.

Una expresión constante es una expresión que se puede evaluar completamente en tiempo de compilación. Dado que la única forma de crear un valor que no sea null de un tipo de referencia es aplicar el nuevo operador, y puesto que el nuevo operador no se permite en una expresión constante, el único valor posible para las constantes de los tipos de referencia que no sean String es null.

Si se produce este error al intentar crear una matriz de cadenas constantes, la solución consiste en convertir la matriz en una matriz de sólo lectura e inicializarla en el constructor.

Ejemplo

En el siguiente ejemplo se genera el error CS0134.

// CS0134.cs
// compile with: /target:library
class MyTest {} 

class MyClass
{
   const MyTest test = new MyTest();   // CS0134

   //OK
   const MyTest test2 = null;
   const System.String test3 = "test";
}