问题
I'd like to use a default parameter value of IntPtr.Zero in a function that takes an IntPtr
as an argument. This is not possible as IntPtr.Zero
is not a compile time constant.
Is there any way I can do what I want?
回答1:
Somewhat unintuitive, to put it mildly, you get it by using the new operator:
void Foo(IntPtr arg = new IntPtr()) {
}
That was for fun, you probably enjoy this one better:
void Foo(IntPtr arg = default(IntPtr)) {
}
回答2:
Since IntPtr
is a struct, you could use Nullable-of-T?
static void SomeMethod(IntPtr? ptr = null) {
var actualPtr = ptr ?? IntPtr.Zero;
//...
}
来源:https://stackoverflow.com/questions/12999495/c-default-parameter-value-for-an-intptr