C#教程01_C#简介

本文介绍了.NETFramework的基础,包括其包含的代码库和面向对象编程特性,以及使用C#编写.NET应用程序的过程。探讨了CIL和JIT编译、程序集、托管代码和垃圾回收的概念,以及C#作为.NET开发语言的优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

1.1 .NET Framework的含义

1.1.1 .NET Framework的内容

1.1.2 使用.NET Framework编写应用程序

1.2 C#的含义

1.2.1 用C#能编写什么样的应用程序

1.2.2 解决方案

1.3 本章要点


 

1.1 .NET Framework的含义

 

1.1.1 .NET Framework的内容

.NET Framework主要包含一个庞大的代码库,可以在客户语言(如C#)中通过面向对象编程技术(OOP)来使用这些代码。

 

1.1.2 使用.NET Framework编写应用程序

使用.NET Framework编写应用程序,就是使用.NET代码库编写代码(使用支持Framework的任何一种语言)。

为执行C#代码,必须把它们转换为目标操作系统能理解的语言,即本机代码(native code)。这种转换称为编译代码,由编译器执行。但在.NET Framework下,此过程包括两个阶段。

1.CIL和JIT

在编译使用.NET Framework库的代码时,不是立即创建专用于操作系统的本机代码,而是把代码编译为通用中间语言(Common Intermediate Language,CIL)代码,这些代码并非专门用于任何一种操作系统,也非专门用于C#。其他.NET语言(如Visual Basic .NET)也会在第一阶段编译为这种语言。开发C#应用程序时,这个编译步骤由VS完成。

要执行应用程序,必须完成更多工作,这是Just-In-Time(JIT)编译器的任务,它把CIL编译为专用于OS和目标机器结构的本机代码。这样OS才能执行应用程序。这里编译器的名称Just-In-Time反映了CIL代码仅在需要时才编译的事实。这种编译可以在应用程序的运行过程中动态发生,不过开发人员一般不需要关心这个过程。除非要编写性能十分关键的代码,否则知道这个编译过程会在后台自动进行,并不需要人工干预就可以了。

2.程序集

编译应用程序时,所创建的CIL代码存储在一个程序集中。程序集包括可执行的应用程序文件(这些文件可以直接在Windows上运行,不需要其他程序,其扩展名是.exe)和其他应用程序使用的库(其扩展名是.dll)。

3.托管代码

在将代码编译为CIL,再用JIT编译器将它编译为本机代码后,CLR的任务尚未全部完成,还需要管理正在执行的用.NET Framework编写的代码(这个执行代码的阶段通常称为运行时(runtime))。即CLR管理着应用程序,其方式是管理内存、处理安全性以及允许进行跨语言调试等。

4.垃圾回收

托管代码最重要的一个功能是垃圾回收(garbage collection)。这种.NET方法可确保应用程序不再使用某些内存时,就会完全释放这些内存。在.NET推出以前,这项工作主要由程序员负责,代码中的几个简单错误会把大块内存分配到错误的地方,使这些内存神秘失踪。这通常意味着计算机的速度逐渐减慢,最终导致系统崩溃。

.NET垃圾回收会定期检查计算机内存,从中删除不再需要的内容。执行垃圾回收的时间并不固定,可能一秒钟内会进行数千次的检查,也可能几秒钟才检查一次,不过一定会进行检查。

 

1.2 C#的含义

如上所述,C#是可用于创建要运行在.NET CLR上的应用程序的语言之一,它从C和C++语言演化而来,是Microsoft专门为使用.NET平台而创建的。C#吸取了以往语言失败的教训,考虑了其他语言的许多优点,并解决了它们存在的问题。

使用C#开发应用程序比使用C++简单,因为其语法更简单。但是,C#是一种强大的语言,在C++中能完成的任务几乎都能利用C#完成。虽然如此,C#中与C++高级功能等价的功能(例如直接访问和处理系统内存),只能在标记为“unsafe”的代码中使用。顾名思义,这个高级编程技术存在潜在威胁,因为它可能覆盖系统中重要的内存块,导致严重后果。因此,本书不讨论这个问题。

C#代码常比C++略长一些。这是因为C#是一种类型安全的语言(与C++不同)。在外行人看来,这表示一旦为某个数据指定了类型,就不能转换为另一个不相关的类型。所以,在类型之间转换时,必须遵守严格的规则。执行相同的任务时,用C#编写的代码通常比用C++编写的代码长。但C#代码更健壮,调试起来也比较简单,.NET始终可以随时跟踪数据的类型。在C#中,不能完成诸如“把4字节的内存分配给这个数据后,我们使其有10个字节长,并把它解释为X”等任务,但这并不是一件坏事。

C#只是用于.NET开发的一种语言,但它是最好的一种语言。C#的优点是,它是唯一彻头彻尾为.NET Framework设计的语言,是在移植到其他操作系统上的.NET版本中使用的主要语言。要使诸如VB.NET的语言尽可能类似于其以前的语言,且仍遵循CLR,就不能完全支持.NET代码库的某些功能,至少需要不常见的语法。

但C#能使用.NET Framework代码库提供的每种功能。而且,.NET的每个新版本都在C#语言中添加了新功能,满足了开发人员的要求,使之更强大。

 

1.2.1 用C#能编写什么样的应用程序

C#使用的是.NET Framework,所以也没有限制应用程序的类型。

  • 桌面应用程序  这些应用程序(如Microsoft Office)具有我们很熟悉的Windows外观和操作方式,使用.NET Framework的Windows Presentation Foundation(WPF)模块就可以简便地生成这种应用程序。WPF模块是一个控件库,其中的控件(例如按钮、工具栏和菜单等)可用于建立Windows用户界面(UI)。
  • Windows Store应用程序  这是Windows 8引入的一类新的应用程序。此类应用程序主要针对触摸设备设计,通常全屏运行,侧重点在于简洁清晰。创建这类应用程序的方式有多种,包括使用WPF。
  • 云/Web应用程序  .NET Framework包括一个动态生成Web内容的强大系统——ASP.NET,允许进行个性化和实现安全性等。另外,这些应用程序可以在云中驻留和访问,例如Microsoft Azure平台。
  • Web API  这是建立REST风格的HTTP服务的理想框架,支持许多客户端,包括移动设备和浏览器。
  • WCF服务  这是一种灵活创建各种分布式应用程序的方式。使用WCF服务可以通过局域网或Internet交换几乎各种数据。无论使用什么语言创建WCF服务,也无论WCF服务驻留在什么系统上,都使用一样简单的语法。

 

1.2.2 解决方案

在使用VS开发应用程序时,可以通过创建解决方案来完成。在VS术语中,解决方案不仅是一个应用程序,它还包含项目,可以是WPF项目和Cloud/Web应用程序项目等。但是,解决方案可以包含多个项目,这样,即使相关的代码最终在硬盘上的多个位置被编译为多个程序集,也可以把它们组合到一处。

这是非常有用的,因为它可以处理“共享”代码(这些代码放在GAC中),同时,应用程序也使用这段共享代码。在使用唯一的开发环境时,调试代码是非常容易的,因为可以在多个代码块中单步调试指令。

 

1.3 本章要点

序号

主题

要点

1

.NET Framework基础

.NET Framework是Microsoft最新的开发平台,目前的版本是4.6。它包括一个公共类型系统(CTS)和一个公共语言运行库(CLR)。.NET Framework应用程序使用面向对象编程(OOP)的方法论编写,通常包含托管代码。托管代码的内存管理由.NET运行库处理,其中包括垃圾回收

2

.NET Framework应用程序

用.NET Framework编写的应用程序首先编译为CIL。在执行应用程序时,JIT把CIL编译为本机代码。应用程序编译后,把不同的部分链接到包含CIL的程序集中

3

C#基础

C#是包含在.NET Framework中的一种语言,它是已有语言(如C++)的一种演变,可用于编写任意应用程序,包括Web应用程序和桌面应用程序

4

集成开发环境(IDE)

可在Visual Studio 2015中用C#编写任意类型的.NET应用程序,还可以在免费的但功能稍弱的Express产品系列中用C#创建.NET应用程序。这两种IDE都使用解决方案,解决方案可以包含多个项目

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值