Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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();
//...
}