我想在一个以IntPtr
为参数的函数中使用默认参数值IntPtr.Zero
。这是不可能的,因为IntPtr.Zero
不是编译时常量。
有什么方法可以做我想做的事吗?
答案 0 :(得分:28)
有点不直观,说得客气一点,你可以使用 new 运算符来获取它:
void Foo(IntPtr arg = new IntPtr()) {
}
这很有趣,你可能更喜欢这个:
void Foo(IntPtr arg = default(IntPtr)) {
}
答案 1 :(得分:3)
由于IntPtr
是一个结构,你可以使用Nullable-of-T?
static void SomeMethod(IntPtr? ptr = null) {
var actualPtr = ptr ?? IntPtr.Zero;
//...
}