C# 为什么从控制台应用程序调用MessageBox是非托管代码?

C# 为什么从控制台应用程序调用MessageBox是非托管代码?,c#,unmanaged,C#,Unmanaged,在平台调用示例中,MessageBox作为非托管代码从控制台应用程序调用 我想知道为什么会这样?就我所知,这不就是System.Windows.Forms命名空间中包含的MessageBox吗 那么为什么在这个例子中,MessageBox方法是非托管代码呢?不,它不一样。在NET中,这是一个只有一个名为Show的静态方法的类,在该示例中,它们引用的是User32.dll(一个核心windows OS系统dll)中的函数,当然这是非托管代码。它只是碰巧有相同的名字,但它们是两个不同的things@

在平台调用示例中,
MessageBox
作为非托管代码从控制台应用程序调用

我想知道为什么会这样?就我所知,这不就是
System.Windows.Forms
命名空间中包含的
MessageBox


那么为什么在这个例子中,
MessageBox
方法是非托管代码呢?

不,它不一样。在NET中,这是一个只有一个名为Show的静态方法的类,在该示例中,它们引用的是User32.dll(一个核心windows OS系统dll)中的函数,当然这是非托管代码。它只是碰巧有相同的名字,但它们是两个不同的things@Steve,但是静态方法是在幕后对非托管代码进行相同的调用,还是也不同?是的,在网络中,他们在经过大量检查后调用该方法。你可以看到NET MessageBox的来源。在这里显示除Steve所说的之外,请注意,如果你在控制台应用程序中引用
System.Windows.Forms
,你可以随时调用托管
MessageBox.Show
方法。这只是一个示例,用于教学,但并不实用。实际上,在项目中添加对System.Windows.Forms的引用后,您只需使用托管方法。