gpt4 book ai didi

c# - 新的 IntPtr(0) 与 IntPtr.Zero

转载 作者:IT王子 更新时间:2023-10-29 04:24:22 26 4
gpt4 key购买 nike

这两种说法有什么区别吗:

IntPtr myPtr = new IntPtr(0);
IntPtr myPtr2 = IntPtr.Zero;

我见过许多使用 PInvoke 的示例,如果 myPtr 参数由 ref 发送到被调用函数,它们更喜欢第一种语法。如果我将应用程序中所有新的 IntPtr(0) 替换为 IntPtr.Zero,是否会造成任何损害?

最佳答案

IntPtr 是一种值类型,因此与 String.Empty 不同,拥有静态属性 IntPtr.Zero 的好处相对较小

只要你将 IntPtr.Zero 传递到任何地方,你就会得到一个副本,所以对于变量初始化来说,这没有区别:

IntPtr myPtr = new IntPtr(0);
IntPtr myPtr2 = IntPtr.Zero;

//using myPtr or myPtr2 makes no difference
//you can pass myPtr2 by ref, it's now a copy

有一个异常(exception),那就是比较:

if( myPtr != new IntPtr(0) ) {
//new pointer initialised to check
}

if( myPtr != IntPtr.Zero ) {
//no new pointer needed
}

正如几位发帖人所说。

关于c# - 新的 IntPtr(0) 与 IntPtr.Zero,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/560244/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com