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)) { 
    }
该死,我有预感“默认”可能会工作,但附近没有编译器可以检查-所以玩得很安全。回答得好。