我在Visual Studio中按 F12 时遇到了mscorlib IntPtr
结构中的代码。
public static unsafe explicit operator void* (IntPtr value)
{
return value.m_value;
}
我知道我们可以像这样定义显式的强制转换操作符,但它是无效的*所以我很困惑这是什么以及它的用途是什么?
答案 0 :(得分:4)
Void *是一个无效指针。它是一种经常在C ++中使用的构造。大多数情况下,当您想要将指针用于多个其他数据类型时,或者如果您不确定将使用指针的数据类型时,则会使用它。
从本质上讲,您可以将其视为通用类型,因为它可以转换为任何其他指针类型,反之亦然。它通常在处理非托管代码时使用,并且是C ++构造。在托管代码中,它通常没有使用。