什么是void *在显式转换运算符中以及它的用途是什么?

时间:2015-11-17 08:52:52

标签: c#

我在Visual Studio中按 F12 时遇到了mscorlib IntPtr结构中的代码。

public static unsafe explicit operator void* (IntPtr value)
{
    return value.m_value;
}

我知道我们可以像这样定义显式的强制转换操作符,但它是无效的*所以我很困惑这是什么以及它的用途是什么?

1 个答案:

答案 0 :(得分:4)

Void *是一个无效指针。它是一种经常在C ++中使用的构造。大多数情况下,当您想要将指针用于多个其他数据类型时,或者如果您不确定将使用指针的数据类型时,则会使用它。

从本质上讲,您可以将其视为通用类型,因为它可以转换为任何其他指针类型,反之亦然。它通常在处理非托管代码时使用,并且是C ++构造。在托管代码中,它通常没有使用。