我是C#的新手(但不是编程),我想知道:C#程序总是需要.NET,还是有办法避免依赖并使应用程序独立?
答案 0 :(得分:14)
是C#始终需要.NET运行时。
如果您担心其他平台,Mono允许.NET应用程序使用Mono运行时在Windows(即Linux)以外的平台上运行。
C#代码被编译成CIL代码,这是一个独立于平台的指令集,我引自Wikipedia:
编译.NET编程期间 语言,源代码是 翻译成CIL代码而不是 平台或特定于处理器的对象 码。 CIL是一个CPU和 与平台无关的指令集 可以在任何地方执行 环境支持共同 语言基础设施,如 Windows上的.NET运行时,或者 跨平台的Mono运行时。
答案 1 :(得分:5)
答案 2 :(得分:2)
C#未编译为本机代码,因此计算机无法读取它。您需要.Net框架来转换所谓的字节码(C#编译器编译的代码,CLI)可以通过.Net框架的Just In Time编译器进行转换。
Mono是一个替代框架,它也可以运行C#。它支持更多平台,然后是.Net框架(仅支持Windows)。
所以,是的。运行C#应用程序需要.Net框架或Mono运行时,新版本的Windows会自动安装和更新.Net框架。
答案 3 :(得分:2)
显然不需要.NET运行时,例如,请参阅MonoTouch。
答案 4 :(得分:1)
有可能。 C#只是一种编程语言,就像任何其他编程一样:它可以用你能想到的任何方式编译:包括没有.NET的编译。事实上,MONO项目(许多平台的C#)就是这样做的。
还有一些其他的商业编译器可以假装在没有.NET的情况下编译你的应用程序,但他们只是将.NET粘贴在你的可执行文件中:这是无用的,缓慢的,只是愚蠢的。
在没有.NET或MONO的情况下使用C#的任何其他方式都将是一种教育体验而非实际解决方案。至于教育体验的价值:如果你有时间,我肯定会建议你尝试类似的东西。
答案 5 :(得分:0)
正如C程序通常需要C运行时一样,C#程序需要公共语言运行库。