2012-10-21 3 views
13

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

Есть ли способ, которым я могу делать то, что хочу?

ответ

26

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

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

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

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

Darn, у меня была догадка о том, что «по умолчанию» может работать, но рядом нет компилятора для проверки - так что он безопасен. Хороший ответ. –

3

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

static void SomeMethod(IntPtr? ptr = null) { 
    var actualPtr = ptr ?? IntPtr.Zero; 
    //... 
} 
Смежные вопросы