我只是看一个例子,在其中我看到了代码

return new IntPtr(handle);


仔细阅读我们的代码后,我发现我们已经使用了类似的模式,但是在我们的代码中,我们几乎拥有相同的东西:

return (IntPtr)handle;


两者之间有区别吗?第二个将不会以任何方式“更好”,因为它不会分配新的内存,或者强制转换只是将相同的构造函数隐藏在下面?

最佳答案

在您的示例中,我猜测handle是一个整数值? IntPtr声明了从Int32(int)和Int64(long)的显式转换,它们仅调用相同的构造函数:

public static explicit operator IntPtr(int value)
{
    return new IntPtr(value);
}


因此,除了可能的可读性问题外,实际上没有其他区别。

10-02 05:46
查看更多