Подтвердить что ты не робот

С#, значение параметра по умолчанию для IntPtr

Я хотел бы использовать значение параметра по умолчанию IntPtr.Zero в функции, которая принимает IntPtr в качестве аргумента. Это невозможно, так как IntPtr.Zero не является постоянной времени компиляции.

Есть ли способ сделать то, что я хочу?

4b9b3361

Ответ 1

Немного неинтуитивно, мягко говоря, вы получите его с помощью нового оператора:

    void Foo(IntPtr arg = new IntPtr()) { 
    }

Это было весело, вам, вероятно, понравилось это лучше:

    void Foo(IntPtr arg = default(IntPtr)) { 
    }

Ответ 2

Так как IntPtr является структурой, вы можете использовать Nullable-of-T?

static void SomeMethod(IntPtr? ptr = null) {
    var actualPtr = ptr ?? IntPtr.Zero;
    //...
 }