次の方法で共有


コンパイラ エラー CS1736

既定のパラメーター値は、コンパイル時に定数である必要があります

CS1736 が生成される例は次のとおりです。

// CS1736.cs

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

既定のパラメーター値は、メソッドの呼び出し時に評価されます。 メソッドが呼び出されるときの値は、コンパイル時に定数でない限り、宣言時に事前に決定しておくことはできません。

このエラーを解決するには

動的に評価される値が必要な場合は、実行時にチェックされるコンパイル時定数をマーカー値として使用することを検討してください。

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