CSharp 简写为c#,是一门非常年轻而又有活力的语言。

CSharp的诞生

     在2000年6月微软发布了c#这门新的语言。作为微软公司.NET 平台的主角,c#吸收了在他之前诞生的语言(c/c++、Visual Basic、Delphi、Java)的优点。也就是说在.NET平台下 c#可以轻易的使用面向对象的设计和实现出安全高效的程序。

发现到现在

     经过十几年的发展,.NET 平台发展到了 4.5版本。提供了各种新的语言特征(3.0:lambda,linq等 4.0 :动态语言、可选参数和命名参数等)和开发框架(asp.net mvc、wcf、wpf、WWF),在其他语言中非常流行的开发框架(spring.framework、nhibernate、ibatis等)都得到了完美移植。

     跨平台方面,借助mono.NET,可以开发在android、ios手机上运行的应用和手游,可以开发并部署在linux服务器上运行的网站以及其他后台应用程序。

     曾经的微软帝国现在逐渐以一种开放的态度向的开发者示以好意,在github上,创建了asp.netmsopentechdonetMicrosoft 等开源地址,值得一提的是在2015年2月.NET Core的执行引擎 coreclr 也开源了。这标志了微软在开源和跨平台又向前迈出了一步。

CSharp如何运行的

     c#的源代码已cs为后缀的文本文件,从文本文件的源代码到可以执行的c#经历了两个非常重要的编译阶段。

1. 把源代码编译为Microsoft中间语言(IL)

2.公共语言动态库(CLR)把IL编译为平台专用的代码

     由此可以看出 Microsoft(中间语言)IL发挥了非常大的作用。IL是一种低级语言,总是及时编译的,也称为JIT编译(JIT编译器只编译那一部份调用的代码,并且编译一次之后把本地可执行程序储存起来,在下次运行的时候直接运行本地程序 不用重新编译。)

     不只是c#可以变成中间语言,vb、c++也可以编译成中间语言,也就是说c#可以轻松和这些可以编译成中间语言的高级语言互调用。

     并且由编译过程中被编译成了中间语言可以看出c#的运行和平台无关。实现了中间语言运行环境即可让其运行。mono 项目就是一个很好的例子。 基于他的还有 xamarinunity3d

     所以无论将c#作为入门语言还是作为程序员长期发展的语言来学习都是一个很好的选择。

c#进阶之神奇的CSharp的更多相关文章

  1. Android自定义view进阶-- 神奇的贝塞尔曲线

    上一篇介绍了自定义view需要知道的基本函数.新开一篇献给借给我vpn的深圳_奋斗小哥. 转载请注明出处:http://blog.csdn.net/wingichoy/article/details/ ...

  2. C#进阶系列——WebApi 接口参数不再困惑:传参详解

    前言:还记得刚使用WebApi那会儿,被它的传参机制折腾了好久,查阅了半天资料.如今,使用WebApi也有段时间了,今天就记录下API接口传参的一些方式方法,算是一个笔记,也希望能帮初学者少走弯路.本 ...

  3. C#进阶系列——一步一步封装自己的HtmlHelper组件:BootstrapHelper

    前言:之前学习过很多的Bootstrap组件,博主就在脑海里构思:是否可以封装一套自己Bootstrap组件库呢.再加上看到MVC的Razor语法里面直接通过后台方法输出前端控件的方式,于是打算仿照H ...

  4. 进击的Python【第七章】:Python的高级应用(四)面向对象编程进阶

    Python的高级应用(三)面向对象编程进阶 本章学习要点: 面向对象高级语法部分 静态方法.类方法.属性方法 类的特殊方法 反射 异常处理 Socket开发基础 一.面向对象高级语法部分 静态方法 ...

  5. C#进阶系列——MEF实现设计上的“松耦合”(四):构造函数注入

    前言:今天十一长假的第一天,本因出去走走,奈何博主最大的乐趣是假期坐在电脑前看各处堵车,顺便写写博客,有点收获也是好的.关于MEF的知识,之前已经分享过三篇,为什么有今天这篇?是因为昨天分享领域服务的 ...

  6. C#进阶系列——动态Lamada(二:优化)

    前言:前几天写了一篇动态Lamada的文章C#进阶系列——动态Lamada,受园友xiao99的启发,今天打算来重新优化下这个动态Lamada的工具类.在此做个笔记,以免以后忘了. 一.原理分析 上篇 ...

  7. C#进阶系列——DDD领域驱动设计初探(三):仓储Repository(下)

    前言:上篇介绍了下仓储的代码架构示例以及简单分析了仓储了使用优势.本章还是继续来完善下仓储的设计.上章说了,仓储的最主要作用的分离领域层和具体的技术架构,使得领域层更加专注领域逻辑.那么涉及到具体的实 ...

  8. C#进阶系列——DDD领域驱动设计初探(五):AutoMapper使用

    前言:前篇搭建了下WCF的代码,就提到了DTO的概念,对于为什么要有这么一个DTO的对象,上章可能对于这点不太详尽,在此不厌其烦再来提提它的作用: 从安全上面考虑,领域Model都带有领域业务,让Cl ...

  9. C#进阶系列——DDD领域驱动设计初探(七):Web层的搭建

    前言:好久没更新博客了,每天被该死的业务缠身,今天正好一个模块完成了,继续来完善我们的代码.之前的六篇完成了领域层.应用层.以及基础结构层的部分代码,这篇打算搭建下UI层的代码. DDD领域驱动设计初 ...

随机推荐

  1. mysql sleep进程过多,应用级配置

    <property name="hibernateProperties"> <props> <prop key="hibernate.dia ...

  2. myeclipse学习总结二(myeclipse安装svn插件)

    1.在myeclipse中要安装svn插件,首先是下载svn插件. 下载地址:http://subclipse.tigris.org/servlets/ProjectDocumentList?fold ...

  3. .NET Core的文件系统[2]:FileProvider是个什么东西?

    在<读取并监控文件的变化>中,我们通过三个简单的实例演示从编程的角度对文件系统做了初步的体验,接下来我们继续从设计的角度来继续认识它.这个抽象的文件系统以目录的形式来组织文件,我们可以利用 ...

  4. .NET Core采用的全新配置系统[5]: 聊聊默认支持的各种配置源[内存变量,环境变量和命令行参数]

    较之传统通过App.config和Web.config这两个XML文件承载的配置系统,.NET Core采用的这个全新的配置模型的最大一个优势就是针对多种不同配置源的支持.我们可以将内存变量.命令行参 ...

  5. js模块定义——支持CMD&AMD&直接加载

    /* animate */ //直接加载 (function() { var animate = {} //balabala window.animate = animate; })(); //AMD ...

  6. SELECT TOP 1 比不加TOP 1 慢的原因分析以及SELECT TOP 1语句执行计划预估原理

    本文出处:http://www.cnblogs.com/wy123/p/6082338.html 现实中遇到过到这么一种情况: 在某些特殊场景下:进行查询的时候,加了TOP 1比不加TOP 1要慢(而 ...

  7. 想着模仿京东微信首页呢,banner滚动搞定了,写到了一半了

    接着上篇 微信小程序-阅读小程序demo写:http://www.cnblogs.com/muyixiaoguang/p/5917986.html 想着模仿京东首页呢,结果也没赶得及写完,轮播图让我搞 ...

  8. SSM项目搭建(提供源码)

    1创建web动态项目,项目结构截图 2.配置日志文件 #\u5B9A\u4E49LOG\u8F93\u51FA\u7EA7\u522B log4j.rootLogger=INFO,Console,Fi ...

  9. sql server查询可编程对象定义的方式对比以及整合

    本文目录列表: 1.sql server查看可编程对象定义的方式对比 2.整合实现所有可编程对象定义的查看功能的存储dbo.usp_helptext2 3.dbo.helptext2的选择性测试 4. ...

  10. internet协议入门

    前言 劳于读书,逸于作文. 原文地址:internet协议入门 博主博客地址:Damonare的个人博客 博主之前写过一篇博客:网络协议分析,在这篇博客里通过抓包,具体的分析了不同网络协议的传送的数据 ...