什么是.NET';s的用途和限制?

什么是.NET';s的用途和限制?,.net,winapi,.net,Winapi,我对.NET和C#/C++.NET的概念很肤浅。我曾多次使用它来创建一些简单、独立的应用程序。从我过于简单的观点来看,我将其视为另一个“框架”,例如,位于操作系统之上的层,可用于为用户编写应用程序。有没有人能解释一下它的局限性以及什么时候最有用 就限制而言,您能否,例如,编写一个 键盘记录器(需要挂钩?) MIDI键盘输入转录器(例如,接受MIDI键盘输入并将其转录成乐谱-需要与MIDI设备驱动程序接口?) FPS的机器人(我想是一堆复杂的东西) 音频播放器的插件(例如Winamp。API可能

我对.NET和C#/C++.NET的概念很肤浅。我曾多次使用它来创建一些简单、独立的应用程序。从我过于简单的观点来看,我将其视为另一个“框架”,例如,位于操作系统之上的层,可用于为用户编写应用程序。有没有人能解释一下它的局限性以及什么时候最有用

就限制而言,您能否,例如,编写一个

  • 键盘记录器(需要挂钩?)
  • MIDI键盘输入转录器(例如,接受MIDI键盘输入并将其转录成乐谱-需要与MIDI设备驱动程序接口?)
  • FPS的机器人(我想是一堆复杂的东西)
  • 音频播放器的插件(例如Winamp。API可能是C++)
  • 视频播放器(如Windows Media player)

使用.NET和C++(或C++.NET,如果需要)?即使技术上可行,使用.NET而不是Win32 API会有什么好处吗


就有用性而言,.NET什么时候最有用?我意识到.NET可以独立于操作系统,有很多类(这样你就不必重新发明轮子),可以用于移动开发等,但就为Windows编写应用程序而言,你可以用.NET做的只是你用Win32 API做的一个子集。使用.NET主要是为了方便、轻松、更抽象等等吗?

使用.NET的优势主要体现在两个方面:

  • 自动内存管理=垃圾回收。您花时间实现有用的功能,而不是查找内存泄漏

  • .NET库类提供了许多现成的功能。从UI库到加密API,您可以获得很多。用C++,在大多数情况下,你会寻找一个第三方库来执行一些任务。

  • 这两个因素导致了更高的开发速度,这吸引了大多数开发人员。大多数都没有尽可能快地执行代码的要求

    如果您确实需要编写一些带有指针和内存管理的低级代码,可以在C#应用程序中添加“不安全”代码块(不确定VB.NET是否允许)。因此,在需要时,您将结合更高级别的API和高执行速度


    我不确定键盘记录器或视频播放器,但我认为这是可能的。关于视频播放器,它几乎肯定会使用某种API来实现硬件加速,因此与您构建UI的工具包无关。

    NET提供的优势主要涉及两个要素:

  • 自动内存管理=垃圾回收。您花时间实现有用的功能,而不是查找内存泄漏

  • .NET库类提供了许多现成的功能。从UI库到加密API,您可以获得很多。用C++,在大多数情况下,你会寻找一个第三方库来执行一些任务。

  • 这两个因素导致了更高的开发速度,这吸引了大多数开发人员。大多数都没有尽可能快地执行代码的要求

    如果您确实需要编写一些带有指针和内存管理的低级代码,可以在C#应用程序中添加“不安全”代码块(不确定VB.NET是否允许)。因此,在需要时,您将结合更高级别的API和高执行速度

    我不确定键盘记录器或视频播放器,但我认为这是可能的。关于视频播放器,它几乎肯定会使用某种API来实现硬件加速,因此它与您构建UI的工具包无关。

    • 您不能将其用于实时应用程序,因为您不知道何时将触发GC。这意味着在它的基础上开发媒体播放器将非常困难
    • 您不能在内存小于64KB的计算机上使用它
    • 内核内的设备驱动程序不能使用它。(但您可以将它们与低级设备驱动程序结合使用)
    就这样。您可以在嵌入式设备、智能手机、Linux、OS X、iPhone、XBox 360以及Windows上使用.NET

    NET通常只是Windows使用的Win32或COM API的良好包装器

    • 您不能将其用于实时应用程序,因为您不知道何时将触发GC。这意味着在它的基础上开发媒体播放器将非常困难
    • 您不能在内存小于64KB的计算机上使用它
    • 内核内的设备驱动程序不能使用它。(但您可以将它们与低级设备驱动程序结合使用)
    就这样。您可以在嵌入式设备、智能手机、Linux、OS X、iPhone、XBox 360以及Windows上使用.NET


    NET通常只是Windows使用的Win32或COM API的良好包装器

    要想对.NET Framework有一个公正的理解,可以在谷歌上搜索它或查看。 在我看来,它可以创建/执行“几乎”所有您想做的事情,而其他语言/框架也可以


    限制?好的,维基百科有一个关于的章节。

    要对.NET框架有一个公正的理解,可以用谷歌搜索它,或者查看。 在我看来,它可以创建/执行“几乎”所有您想做的事情,而其他语言/框架也可以


    限制?好吧,维基百科有一个关于的章节。

    我想说的是,对于这些东西,.NET不太适合*。它的利基在其他地方,但它在那里蓬勃发展,因为它有自动内存管理、许多漂亮的库、反射和良好的工具支持(重构、代码浏览等)

    (*)我用C#为foobar2000(C++)编写了一个音频播放器插件(请参阅)。我可以很好地想象一个FPS机器人,只要你编写代码将它粘到可能的游戏中,这很可能是用C++编写的。