C#,IntPtr的默认参数值

Tom*_*ies 15 c# intptr default-parameters

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

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

Han*_*ant 30

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

    void Foo(IntPtr arg = new IntPtr()) { 
    }
Run Code Online (Sandbox Code Playgroud)

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

    void Foo(IntPtr arg = default(IntPtr)) { 
    }
Run Code Online (Sandbox Code Playgroud)


Mar*_*ell 5

既然IntPtr是结构体,你可以使用 Nullable-of-T 吗?

static void SomeMethod(IntPtr? ptr = null) {
    var actualPtr = ptr ?? IntPtr.Zero;
    //...
 }
Run Code Online (Sandbox Code Playgroud)