C#,IntPtr的默认参数值

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

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

有点不直观,说得温和一点,你可以通过使用new运算符得到它:

  void Foo(IntPtr arg = new IntPtr()) { } 

这很有趣,你可能更喜欢这个:

  void Foo(IntPtr arg = default(IntPtr)) { } 

由于IntPtr是一个结构,你可以使用Nullable-of-T?

 static void SomeMethod(IntPtr? ptr = null) { var actualPtr = ptr ?? IntPtr.Zero; //... }