我只是看一个例子,在其中我看到了代码
return new IntPtr(handle);
仔细阅读我们的代码后,我发现我们已经使用了类似的模式,但是在我们的代码中,我们几乎拥有相同的东西:
return (IntPtr)handle;
两者之间有区别吗?第二个将不会以任何方式“更好”,因为它不会分配新的内存,或者强制转换只是将相同的构造函数隐藏在下面?
最佳答案
在您的示例中,我猜测handle是一个整数值? IntPtr声明了从Int32(int)和Int64(long)的显式转换,它们仅调用相同的构造函数:
public static explicit operator IntPtr(int value)
{
return new IntPtr(value);
}
因此,除了可能的可读性问题外,实际上没有其他区别。