Compartir a través de


Error de compilador CS1736

El valor de parámetro predeterminado debe ser una constante en tiempo de compilación.

Ejemplo

El siguiente ejemplo genera el error CS1736:

// CS1736.cs

public unsafe class C
{
    static void F(int i = G())
    {
        // ...
    }
    static int G() => 0;

Un valor de parámetro predeterminado se evalúa tras invocar al método. Lo que un valor puede ser cuando el método acabe invocándose no se puede determinar anticipadamente en tiempo de declaración, a menos que ese valor sea constante en tiempo de compilación.

Para corregir este error

Si se requiere un valor evaluado dinámicamente, considere la posibilidad de usar una constante en tiempo de compilación como un valor de marcador que, después, se comprueba en tiempo de ejecución:

    static void F(int i = -1)
    {
        if(i == -1) i = G();
        //...
    }