C#语言与.NET初步认识
C
- c#是微软公司在2000年6月发布的一种能全新的、简单的、安全的、面向对象的程序设计语言,是专门为.NET的应用而开发的语言。它吸收了C++、VB、Delphi、Java等语言优点,体现了当今最新的程序设计技术的功能和精华。C#读作——CSharp.
NET
- 也称doNet,一般值Net Framework 框架,是一种平台。是微软为开发应用而创建的一个平台。
- 作用
– 桌面应用程序——WinForm(Client/Server),例如:QQ
– Web 应用程序——ASP.NET Web(B/S),例如:网站
– 移动 App——ASP.NET Core(跨平台———Windows、Linux、Android IOS)
… - .NET Framework 是一个全新的、集成的、面向对象的开发平台,以公共语言运行时为基础,支持多种编程语言,且能跨平台运行,是.NET程序运行的开发的必备条件。
- C# 是一种语言,用于生成面向.NET Framework 环境的代码,但他本身不是.NET 的一部分
.NET 体系结构(如何实现支持多语言、跨平台)与VS 安装
- .MET 体系结构
– .NET Framework 主要由公共语言运行时(CLR)和 .NET Framework 基础类库(Base Class Librery,简称 BCL)两部分组成。
– .NET Framework 位于操作系统与应用程序之间,负责管理在.NET Framework 上运行的各种应用程序。也就是说.NET 应用程序不依赖于操作系统,只依赖于.NET Framework。 - .NET 是如何实现多语言、跨平台的?
– .NET 应用程序执行时不是直接编译成<u>本机代码</u>,而是被编译成Microsoft 中间语言(MSIL),然后中间语言交由公共语言运行库(CLR)执行,CLR 的实时编译器(JIT)根据本机的硬件、操作系统等编译成<u>本机代码</u>
– 公共语言运行库不是一个简单的 JIL 编译器,它还负责提供内存回收、异常处理、安全服务、运行时类型安全检查等底层执行服务。
编写第一个C# 程序
//using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Project_1
{
class Program
{
static void Main(string[] args)
{
System.Console.WriteLine("Hello world !"); // 静态类
System.Console.ReadKey();
}
}
}
Hello world !
- 深入理解程序
– 为什么引入命名空间?
– 深入理解Console.WriteLine(“Hello world!”);——Console是一个类,是System命名空间下的一个静态类,WriteLine是Console类下的一个静态方法。ReadKey是Console类下的另一个静态方法
.NET(C#)程序编译运行原理
- 高级语言源程序执行时都要经过编译或者解释成机器语言程序才能被 CPU 识别执行。但是 C# 程序执行时分为2次编译期,第一次CLR 对 c# 代码(托管代码)进行第一次编译,将源代码编译成 dll 或者是 exe 文件,这类文件都是由中间语言组成(即此时代码被编译成中间语言)。然后是运行期,CLR 会针对目前特定的硬件环境使用即时编辑(JIT),也就是将中间语言翻译成本机代码并执行,把将编译过后的代码放入一个缓冲区中,下次使用相同的代码时,就直接从缓冲区调用,也就是说相同代码只编译 一次,从而提高了程序运行速度(一次编译,处处执行)
- exe 文件和 Dil 文件是.NET 程序编译后的核心文件
– exe 文件:编译后生成的可执行文件,里面是 IL 指令。 可以通过 MSIL 查看工具 ildasm.exe 查看
– Dil 文件:编译后生成的动态链接库文件,里面也是 IL 指令 - Pdb 文件:Porgram Debug DataBase(程序调试数据库)文件,包含了编译后程序执行源代码的位置信息,用于调试的时候定位源代码,方便调试,仅仅是调试时需要用到的文件,发布时完全可以删除
- xxx.exe.config 文件:对应于 App.config 文件
- 非托管代码执行过程:就是源代码直接编译成对应的操作系统、CPU 硬件的机器指令语言,缺点:不同的操作系统需要单独编写代码,重复低效。
自定义 C# 快速简写代码
- 在 vs 中选择工具–>代码片段管理器(语言下拉框选择 CShape),位置下面的下拉列表再选择 Visual C#,然后复制位置文本框里的路径,即找到代码简写文件(X.snippet),然后随便复制一个(比如 cw.snippet),复制的位置可以任意(注意两点:第一、不要再原来的 cw.snippet 位置,第二、需要创建一个文件夹(zdy)来储存复制过来的 cw.snippet 文件)。然后再对复制过来的文件修改(比如需要创建快速输入 Console ReadKey(),可以把文件名改为 crk.snippet),接着打开重命名后的文件(crk.snippet)修改里面的内容,需修改 四个位置。
正文完