为啥要使用托管(C# 和 .NET)或本机代码进行 Windows API 开发?

Posted

技术标签:

【中文标题】为啥要使用托管(C# 和 .NET)或本机代码进行 Windows API 开发?【英文标题】:Why would I want to use managed (C# and .NET) or native code for Windows API development?为什么要使用托管(C# 和 .NET)或本机代码进行 Windows API 开发? 【发布时间】:2012-05-23 05:18:32 【问题描述】:

作为一名学习 Windows API 编程的开发人员,我应该使用本机代码的一些原因,以及我应该使用托管代码的一些原因是什么?

假设我对非 Windows API 编程的两种开发类型同样熟悉。

【问题讨论】:

这个问题是在假设我已经理解该问题的答案的情况下提出的。这一篇专门针对 Windows API 开发。 理想情况下,我想要一些 .NET 更容易的案例以及需要使用原生的案例。 【参考方案1】:

.NET:生产力,易于开发。部分API缺失,需要使用PInvoke导入

C++ 中的 Win32 API:所有 API 均可用。有时它们更难使用,因为底层的复杂性并没有隐藏在 .NET 类后面。

【讨论】:

+1 不错的答案。但作为 MFC 开发人员,我可以说:它不是很难使用。是的,这可能很无聊,因为您必须阅读过多的 MSDN 文档。但是(boring && long) != hard,我想。【参考方案2】:

通常,这完全取决于您需要的控制量以及完成某事所需的时间。

您可以使用 .NET 框架快速完成工作,因为大部分功能都是内置的(尽管是千篇一律的东西)。

如果您需要对应用程序及其对某些事件的反应方式进行极高级别的控制,则可以通过 MFC 使用非托管 C++ 应用程序。

【讨论】:

以上是关于为啥要使用托管(C# 和 .NET)或本机代码进行 Windows API 开发?的主要内容,如果未能解决你的问题,请参考以下文章

为啥将托管 .NET 客户端设置为使用 STA 线程会导致本机 COM 服务器中出现异常问题?

C# 对本机互操作的限制

调用本机代码的多线程托管应用程序

C# - Span 全面介绍:探索 .NET 新增的重要组成部分

c# 开发的winform软件 怎么样使其只能在xp系统下运行

如何在托管代码(C#)中从本机代码(C++)获取字符串数组