C#,IntPtr的默认参数值

时间:2012-10-21 15:58:39

标签: c# intptr default-parameters

我想在一个以IntPtr为参数的函数中使用默认参数值IntPtr.Zero。这是不可能的,因为IntPtr.Zero不是编译时常量。

有什么方法可以做我想做的事吗?

2 个答案:

答案 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;
    //...
 }