CS1736-os fordítási hiba

A paraméter alapértelmezett értékének fordítási időállandónak kell lennie

Példa

A következő minta a CS1736-ot hozza létre:

// CS1736.cs

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

A rendszer a metódus meghívása után kiértékel egy alapértelmezett paraméterértéket. Mi lehet az az érték, amikor a metódust végül meghívják, nem határozható meg előre deklaráláskor, kivéve, ha ez az érték fordítási időpontban állandó.

A hiba kijavítása

Ha dinamikusan kiértékelt értékre van szükség, fontolja meg a fordítási idő állandó használatát jelölőértékként, amelyet aztán futásidőben ellenőriz:

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