C#,IntPtr的默认参数值
我想在以C#,IntPtr的默认参数值,c#,intptr,default-parameters,C#,Intptr,Default Parameters,我想在以IntPtr为参数的函数中使用默认参数值。这是不可能的,因为IntPtr.Zero不是编译时常量 有什么方法可以做我想做的吗?因为IntPtr是一个结构,所以可以使用null-of-T static void SomeMethod(IntPtr? ptr = null) { var actualPtr = ptr ?? IntPtr.Zero; //... } 有点不直观,说得委婉一点,您可以通过使用新运算符获得它: void Foo(IntPtr arg =
IntPtr
为参数的函数中使用默认参数值。这是不可能的,因为IntPtr.Zero
不是编译时常量
有什么方法可以做我想做的吗?因为
IntPtr
是一个结构,所以可以使用null-of-T
static void SomeMethod(IntPtr? ptr = null) {
var actualPtr = ptr ?? IntPtr.Zero;
//...
}
有点不直观,说得委婉一点,您可以通过使用新运算符获得它:
void Foo(IntPtr arg = new IntPtr()) {
}
那是为了好玩,你可能更喜欢这个:
void Foo(IntPtr arg = default(IntPtr)) {
}
该死,我有预感“默认”可能会工作,但附近没有编译器可以检查-所以玩得很安全。回答得好。