开发者

Is default(IntPtr) legal in an extern function?

Let's say I have the following signature:

static extern void External(int foo, IntPtr bar);

I want to make it use defaults:

static extern void External(int foo = 10, IntPtr bar = default(IntPtr));

Is this valid? In C++, I开发者_Python百科 would use the pointer to be 0 or null. In C#, it's not even clear if IntPtr is value or reference.

If I called my function manually, I would use External(10, IntPtr.Zero);. I guess my question is: Will default(IntPtr) have the same behavior as IntPtr.Zero?


IntPtr is a value type, and its default is indeed IntPtr.Zero. So this will work as you expect.

This MSDN page contains the following quote:

For structs, it will return each member of the struct initialized to zero or null depending on whether they are value or reference types.

Since IntPtr is a struct, its members will be initialized to 0.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜