我的理解是,C#虽然是由Microsoft创建的,但它是一种可以用于.NET程序之外的编程语言。例如,我可以为C#创建一个编译器来定位本机x86或其他处理器甚至是JVM。我的理解不正确吗?有谁知道C#是否用于.NET以外的任何东西?
答案 0 :(得分:6)
C#用于名为“Singularity”的实验性操作系统,该系统从头开始编写在托管级别。一个值得关注的有趣项目!
修改:感谢 JörgWMittag 对他的评论 - Helios实际上是Singularity的修改形式,支持卫星内核,引用自我正在阅读的论文' Helios是一个操作系统,旨在简化为异构平台编写,部署和调优应用程序的任务。 Helios引入了卫星内核,它可以跨不同体系结构的CPU和性能特征导出一组统一的OS抽象。 Satellite Kernel允许开发人员针对熟悉的操作系统API和抽象编写应用程序。'...有趣......
希望这有帮助, 最好的祝福, 汤姆。
答案 1 :(得分:2)
你是可以用于其他事情是正确的。这是一个语言规范......你可以把它编译成你喜欢的任何东西,如果你花时间,但这是一个巨大的努力。
我不知道除了Mono之外的任何其他用途,正如jrcs3所说的那样,但希望Eric Lippert会在C#中为你提供一个编译器观点
答案 2 :(得分:2)
C# itself is a specification specified by the ECMA“指定表单并建立用C#编程语言编写的程序的解释。” {是the CLR。目前最流行的实现是由Microsoft提供的,你知道的是C#.net。 C#和CLR是开放标准,这意味着任何人都可以自己实现它们,因此形成单声道,一个用于mac / linux的C#编译器。将此与java相比较,java的唯一实现是由sun提供的。它不是开放标准,因此您无法创建自己的实现。
来自wikipedia:
Mono“C#开源,跨平台,实现与Microsoft.NET二进制兼容的CLR”
DotGNU“是GNU项目的一部分,旨在为Microsoft的.NET Framework提供免费软件替代”
Dot Net Anywhere是一个.net CIL解释器,用于定位嵌入式系统。
答案 3 :(得分:1)
据我所知,所有当前现有的C#实现都构建到CIL并在.NET CLR或兼容环境中运行,而我所知道的唯一替代.NET CLR的是Mono。
换句话说,所有当前版本的C#build都在.NET或Mono中运行。
.NET和Mono使用相同的“二进制文件”,因此所有当前的C#编译器都只有一个目标。
答案 4 :(得分:1)
另一个使用领域是通过MonoTouch进行iPhone应用程序开发(我现在也相信iPad)。
什么是MonoTouch?
MonoTouch允许开发人员创建在Apple的iPhone和Apple的iPod Touch设备上运行的基于C#和.NET的应用程序,同时利用iPhone API并重用为.NET构建的代码和库,以及现有的技能。
粗略地说,它是这样的:
MonoTouch - > MonoDevelop / C# - >写一个iPhone应用程序 - >编译为本机代码 - > iPhone应用程序。
相关链接:
答案 5 :(得分:1)
请注意Unity 3D也允许“C# Scripts”,并编译定位到Mac,Windows,Web,Wii和iPhone(以及iPad)。
答案 6 :(得分:0)
您可以在Mono上编译C#程序。但这可能不算数。
Mono是在Linux和各种其他操作系统上运行的公共语言基础结构(CLI)的替代实现。正如其他地方所提到的,C#和CLI都是ECMA标准,任何关心的人都可以实施。
Rotor是另一种非.NET实现。
答案 7 :(得分:0)
确实有一些工具可以将.NET程序集转换为独立的可执行文件或库,因此您不需要您的客户端拥有.NET框架。这还可以在某种程度上进一步保护您的代码免受逆向工程的影响 - 您无法使用Reflector在本机二进制文件上查看.NET源代码。
例如,请参阅Remotesoft Salamander .NET Protector。
但是,这不是严格的C# - >本土; Salamander将MSIL转换为本机代码。
另一方面,制作C#时有at least one academic project - >使用LLVM的本机编译器,称为LLVM#。
答案 8 :(得分:0)
如果您使用MonoTouch,则可以在iPod应用中使用它。