Kompilatorfel CS1736

Standardparametervärdet för måste vara en kompileringskonstant

Exempel

Följande exempel genererar CS1736:

// CS1736.cs

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

Ett standardparametervärde utvärderas när metoden anropas. Vad ett värde kan vara när metoden så småningom anropas kan inte fastställas i förväg vid deklarationstillfället om inte det värdet är konstant vid kompileringstid.

Så här åtgärdar du det här felet

Om ett dynamiskt utvärderat värde krävs bör du överväga att använda en kompileringskonstant som ett markörvärde som sedan kontrolleras vid körning:

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