我对.NET和C#/ C ++ .NET有一个非常浅薄的概念。我已经使用它几次来创建一些简单的独立应用程序。从我简单化的观点来看,我将其视为另一个“框架”,例如。图层,位于可用于编写应用程序的操作系统之上。有人可以更清楚地知道它的局限性和最有用的时间吗?
就限制而言,例如,你可以写一个..
仅使用.NET和C#(或C ++ .NET,如果需要)?即使技术上可行,使用.NET而不是Win32 API会有什么好处吗?
就实用性而言,.NET何时最有用?我意识到.NET可以独立于操作系统,有一堆类(这样你就不必重新发明轮子),可以用于移动开发等,但是就为Windows编写应用而言,你可以用.NET做的只是你可以用Win32 API做的一部分。使用.NET主要是关于方便性,易用性,更多抽象等等吗?
答案 0 :(得分:2)
要对.NET Framework有一个公正的理解,请谷歌或查看wikipedia。 在我看来,它可以创建/执行“几乎”你想要做的其他语言/框架所能做的一切。
限制?好吧,维基百科有一个关于criticism的部分。
答案 1 :(得分:2)
就实用性而言,.NET何时最有用?
每当可以使用它时。你对.NET的看法似乎非常有限,当它真的反过来时:你应该问它什么时候不有用。对于几乎所有意图和目的,.NET简化了软件编写的每个方面(与其他Win32语言相比,特别是C和C ++)。
这些是:
由于更简单(更高级别)的语言,通用,易用的库,高级IDE支持以及许多其他工具,这些方面中的每一个都在.NET中得到了极大的改进和简化。 / p>
C和C ++也存在所有这些,但支持总是有些粗略。这可能听起来很像营销唠叨,但它确实抓住了.NET与传统Win32开发的不同之处。
答案 2 :(得分:1)
.NET提供的优势主要是指两个元素:
自动内存管理=垃圾回收。您花时间实现有用的功能,而不是寻找内存泄漏。
提供大量开箱即用功能的.NET库类。从UI库到加密API,您可以获得很多。使用C ++,在大多数情况下,您会寻找第三方库来为您执行某项任务。
这两个导致更高的开发速度,吸引了大多数开发人员。大多数人没有尽可能快速执行代码的要求。
如果你绝对需要用指针和内存管理来编写低级别的东西,你可以在C#应用程序中添加“不安全”的代码块(不确定VB.NET是否允许)。因此,您将在需要时将更高级别的API与高执行速度相结合。
我不确定关键记录器或视频播放器,但我想这是可能的。关于视频播放器,它几乎肯定会使用某种能够实现硬件加速的API,所以使用你构建UI的工具包并不重要。
答案 3 :(得分:1)
我会说,对于那些东西,.NET并不是那么合适*。它的利基在其他地方,但它在那里蓬勃发展,因为它具有自动内存管理,许多漂亮的库,反射和良好的工具支持(重构,代码浏览......)。
(*)我在C#中为foobar2000(C ++)编写了一个音频播放器插件(参见http://foo-title.sf.net)。我可以想象一个FPS机器人,只要你编写代码将它粘贴到很可能用C ++编写的游戏中。
答案 4 :(得分:0)
就是这样。您可以在嵌入式设备,智能手机,Linux上,OS X上,iPhone上,XBox 360上,当然还有Windows上使用.NET。
.NET通常只是Windows使用的Win32或COM API的一个很好的包装器。
答案 5 :(得分:0)
如果您的应用是API的使用者,则几乎没有任何限制。互操作确实非常好,足以使C可以使用的任何API都可以从C#中使用。
即使是视频播放器也可以用C#编写 - 取决于你自己写了多少。如果你试图编写整个东西,那么你最终必须向DirectX提供数据缓冲区,这是可能的,但是一定数量的代码可能必须在不安全的块中,这消除了很多重点。使用托管语言。
如果你正在为另一个应用程序编写插件DLL,那么这个故事目前还不是很好。通常不建议这样做,因为在任何进程中只能加载一个版本的.NET运行时。例如两个开发人员针对不同版本的运行时为Windows资源管理器编写上下文菜单扩展,第二个要加载的将无法加载。
这在版本4.0中已得到修复,但是从该版本开始,也可以创作插件DLL。