С#, значение параметра по умолчанию для IntPtr
Я хотел бы использовать значение параметра по умолчанию IntPtr.Zero
в функции, которая принимает IntPtr
в качестве аргумента. Это невозможно, так как IntPtr.Zero
не является постоянной времени компиляции.
Есть ли способ сделать то, что я хочу?
Ответы
Ответ 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;
//...
}