c#、.net、winform中间的关系

简单地讲.net包括一个解析应用程序代码的类库以及一个支持程序运行的平台。
何谓平台:
比方说exe可执行文件可以在Windows上运行,却不能在Linux上面运行。操作系统本身就是一个运行平台。底层的API等可以看做类库。所有在Windows上运行的程序其实都只是对底层API直接或间接地调用,扩展了操作系统的功能而已。
.net之前的Windows程序在写完后被编译成二进制的exe文件。它们可以直接被操作系统解释并送到CPU里面运行。也就是说Windows就是这些程序运行的平台。
问题1:
不光Windows与Linux是不同的运行平台。Windows的不同版本也是不同的运行平台。因为它们的操作系统内核或多或少不一样。API的类库也存在差异。如果各个版本的Windows内核不能完全兼容,就会导致如下问题:如果某程序编写的时候调用了某个特定版本Windows的某个函数,并且该函数在其它版本的Windows内核中都没有,那么把该程序发布到其它版本的Windows至上就会出现运行时错误。运行到一半发现找不到某个函数……这是一个问题。
另一个显著的问题是:
编程语言何其之多。如果写C语言的人能够调用B语言编写的组件。那么代码的重用性就得到了极大程度上的增强。
.net
.net出现后解决了很多问题。当然包括这两个问题。.net支持很多种语言。但是C#才是为.net量身定做的语言。打个比方,地球上一部分人讲汉语,一部分人讲英语,一部分人讲鸟来语。但是英语是比较公认的官方语言。说不同语言的人如果不懂对方的语言显然不能沟通。如果有个翻译就OK了。
.net本质也只是对API进行了更安全的封装,也只是Windows的一种扩展而已。但是它之所以独立于Windows之上成为一个运行平台,是因为.net编写的程序并没有直接编译成Windows能够理解的二进制文件。而是编译成了.net的中间语言。好比我们重新定义了一种国际语言。它既不是英语也不是汉语,不是现存的任何语言。但是它可以用来翻译现存的所有语言。正因为程序被编译成了中间语言,它们在这个层面上可以自由地交流。所以C#之类的C型语言可以跟VB型的B型语言等互相访问。也正因为它们被编译成了一种操作系统不认识的中间语言,它们才需要有一个解析平台(公共语言运行时,也是.net的一个部分)。.net相当于同时充当了程序与Windows之间的翻译官与字典的功能。
Winform
这个这个……当你学会了一种语言的时候,你可以用它来唱歌,也可以用它来写诗。
当你要唱歌或者要写诗的时候,你可以用任何一种语言。Winform说到底不就是编程
语言的一件艺术品么?

发布了43 篇原创文章 · 获赞 13 · 访问量 4900

猜你喜欢

转载自blog.csdn.net/qq_30693057/article/details/100129883