关于C#程序编译问题

C语言答疑课堂 2009-01-03 08:05:35
最近在看C#书,书上有一句话“为了执行C#代码,必须把它们转换为目标操作系统能够理解的语言,即本机代码”,这句话是不是有错啊。应该说是“转换成目标机器能够理解的语言”吧,因为本机代码应该是针对机器而言的吧,怎么可能是针对操作系统而言的呢? 还有一个问题就是“支持.Net Framwork的语言”这个说法,意思是说 在用此语言编程中使用.Net Framwork中的一个类时,编译器不会报错吗?请哪位高手能解答下
...全文
164 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
谢谢了,各位的解答的的都很详细
chwlyr 2009-01-03
  • 打赏
  • 举报
回复
为了执行C#代码,必须把它们转换为目标操作系统能够理解的语言,即本机代码”,这句话是不是有错啊。应该说是“转换成目标机器能够理解的语言”吧。
---
目标机器能够理解的语言除了01,就是汇编。
在.NET Framework下ms发明了一种叫msil(微软中间语言)的语言。这种语言和汇编有些相似。
c#编译器会首先将c#代码编译成msil,然后由jit编译成目标系统的代码。

为什么ms会发明msil这种语言,我想也是一种封装吧,让程序员不用去关心底层的实现。比如垮linux的时候,只要clr能够在linux上跑,那么构建在clr之上的应用都可以在linux上跑。

托管的C#代码都运行在CLR之上。而CLR是运行在Windows(先不说Linux上的CLR)操作系统之上的。因此只能是目标操作系统而不是目标机器。

你的第二个问题,
支持.Net Framwork的语言”这个说法
不会报错。.Net Framwork的类库,就是为所有运行在.NET Framwork下的语言服务的。


。Net是支持多语言的。任何满足cls(common language specific)规范的语言都可以运行在.NET Framework之上。(你可以开发一门新的语言,让你的语言满足cls,就可以运行在.NET Framwork之上,当然这个难度!,也只有YY一下了,:)

hubofly 2009-01-03
  • 打赏
  • 举报
回复
“为了执行C#代码,必须把它们转换为目标操作系统能够理解的语言,即本机代码”也就是IL

也就是 转换成.NetFrameWrok可识别的中间语言 然后由.NetFrameWrok来解释执行
wonsoft 2009-01-03
  • 打赏
  • 举报
回复
1、为了执行C#代码,必须把它们转换为目标操作系统能够理解的语言,即本机代码(机器码)。C#源程序编译成中间语言(即IL),然后由.Net 虚拟机解释机器语言,交给操作系统执行。

2、应该说是“转换成目标机器能够理解的语言”吧,因为本机代码应该是针对机器而言的吧,怎么可能是针对操作系统而言的呢?
没有操作系统的计算机是裸机,只有具有了操作系统,计算机才成其为计算机。而不同操作系统,它们的编码形式也不一样。所以这句话应当没有错。

3、还有一个问题就是“支持.Net Framwork的语言”这个说法,意思是说 在用此语言编程中使用.Net Framwork中的一个类时,编译器不会报错吗?。
这种语言就是中间语言。只要你正确引用一个.net中的类的话,编译器配置好了,就不会出错的。

111,131

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧