C#基础谈(一)---- 认识C#

     一直想写一些关于C#的文章,尤其是在社区混得越久这种想法越强烈,今天终于下定决心“提笔”,全部的文字均基于本人对C#学习的心得体会,所有例子均直接取材于CSDN,希望转载时加以注明,目标:让大家都学好C#

 

      好,言归正传,开始进入正题,什么是C#?先看一下MSDN的定义:

Microsoft Visual C# 2005(读作 C sharp)是一种编程语言,它是为生成在 .NET Framework 上运行的多种应用程序而设计的。C# 简单、功能强大、类型安全,而且是面向对象的。C# 凭借它的许多创新,在保持 C 样式语言的表示形式和优美的同时,实现了应用程序的快速开发。

 

      由此可见C#是一种语言,至于它的发展史,我没有去考究过,不过有一种说法是C->C++->C++++,由于四个+号太长了,所以把它们都堆起来,于是上面2个,下面2个,就成了C#,但这毕竟是野史,真实性无从考证。想起了之前的公司主管,把C#念成C shop,虽然听着很别扭,但既然人家是老大,他说shop就shop吧……囧

 

 

    在MSDN的定义中我们还看到了另一个名词:.NET Framework,那这又是什么东东呢?还是先来看MSDN的定义:

.NET Framework 是支持生成和运行下一代应用程序和 XML Web Services 的内部 Windows 组件。.NET Framework 旨在实现下列目标:

  • 提供一个一致的面向对象的编程环境,而无论对象代码是在本地存储和执行,还是在本地执行但在 Internet 上分布,或者是在远程执行的。

  • 提供一个将软件部署和版本控制冲突最小化的代码执行环境。

  • 提供一个可提高代码(包括由未知的或不完全受信任的第三方创建的代码)执行安全性的代码执行环境。

  • 提供一个可消除脚本环境或解释环境的性能问题的代码执行环境。

  • 使开发人员的经验在面对类型大不相同的应用程序(如基于 Windows 的应用程序和基于 Web 的应用程序)时保持一致。

  • 按照工业标准生成所有通信,以确保基于 .NET Framework 的代码可与任何其他代码集成。

.NET Framework 具有两个主要组件:公共语言运行库和 .NET Framework 类库。公共语言运行库是 .NET Framework 的基础。您可以将运行库看作一个在执行时管理代码的代理,它提供内存管理、线程管理和远程处理等核心服务,并且还强制实施严格的类型安全以及可提高安全性和可靠性的其他形式的代码准确性。事实上,代码管理的概念是运行库的基本原则。以运行库为目标的代码称为托管代码,而不以运行库为目标的代码称为非托管代码。.NET Framework 的另一个主要组件是类库,它是一个综合性的面向对象的可重用类型集合,您可以使用它开发多种应用程序,这些应用程序包括传统的命令行或图形用户界面 (GUI) 应用程序,也包括基于 ASP.NET 所提供的最新创新的应用程序(如 Web 窗体和 XML Web Services)。

 

    把定状补都去掉,就可以知道.net framework是一个Windows组建(这里提供一个维基百科的Windows组建列表,有兴趣的朋友可以去看看:http://en.wikipedia.org/wiki/List_of_Microsoft_Windows_components),那既然是Windows组建,它能否在别的操作系统上跑呢?答案是肯定的,Novell公司旗下的Mono项目已经实现了在linux操作系统下运行.net 程序,其在2008年10月发布的Mono2.0版本已经可以兼容.net 2.0了。这里我们就不讨论其它平台下的.net 了,只讨论Windows下的,因为我已成为微软的忠实用户(鄙视我吧)。

 

 

下面的插图显示公共语言运行库和类库与应用程序之间以及与整个系统之间的关系。该插图还显示托管代码如何在更大的结构内运行。

.NET Framework 环境
.net framework环境

用 C# 编写的源代码被编译为一种符合 CLI 规范的中间语言 (IL)。IL 代码与资源(例如位图和字符串)一起作为一种称为程序集的可执行文件存储在磁盘上,通常具有的扩展名为 .exe 或 .dll。程序集包含清单,它提供有关程序集的类型、版本、区域性和安全要求等信息。

执行 C# 程序时,程序集将加载到 CLR 中,这可能会根据清单中的信息执行不同的操作。然后,如果符合安全要求,CLR 就会执行实时 (JIT) 编译以将 IL 代码转换为本机机器指令。CLR 还提供与自动垃圾回收、异常处理和资源管理有关的其他服务。由 CLR 执行的代码有时称为“托管代码”,它与编译为面向特定系统的本机机器语言的“非托管代码”相对应。下图阐释了 C# 源代码文件、.NET Framework 类库、程序集和 CLR 的编译时与运行时的关系。

C#源文件类库程序集和CLR关系

语言互操作性是 .NET Framework 的一项主要功能。因为由 C# 编译器生成的 IL 代码符合公共类型规范 (CTS),因此从 C# 生成的 IL 代码可以与从 Visual Basic、Visual C++、Visual J# 的 .NET 版本或者其他 20 多种符合 CTS 的语言中的任何一种生成的代码进行交互。单一程序集可能包含用不同 .NET 语言编写的多个模块,并且类型可以相互引用,就像它们是用同一种语言编写的。

除了运行时服务之外,.NET Framework 还包含一个由 4000 多个类组成的内容详尽的库,这些类被组织为命名空间,为从文件输入和输出、字符串操作、XML 分析到 Windows 窗体控件的所有内容提供了各种有用的功能。典型的 C# 应用程序使用 .NET Framework 类库广泛地处理常见的“日常”任务。

 

好了,想必大家对C#有一定的了解了,这是本系列第一节,可能会比较枯燥,以后的内容会更加精彩。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值