C#
的发音为
“C Sharp”
,
是一门由微软开发并获得了
ECMA
(欧洲计算机制造商协会)和
ISO
(国际标
准组织)批准的现代的、通用的、面向对象的编程语言。
C#
由
Anders Hejlsberg
及其团队在
.Net Framework
的开发过程中开发,属于
.Net Framework
的一部
分,可以用来编写
.Net
应用程序。
C#
是专为
CLI
(公共语言基础结构)设计的,
CLI
由可执行代码和
运行时环境组成,允许在不同的计算机平台和体系结构上使用各种高级语言。
C#
之所以能称为一门被广泛应用的编程语言,原因有以下几点:
C#
是一种现代的通用的编程语言
C#
是面向对象的;
C#
是面向组件的;
C#
简单易学;
C#
是一种结构化语言;
使用
C#
开发效率很高;
C#
可以在各种计算机平台上进行编译;
C#
是
.Net Framework
的一部分
借助
C#
编程语言,我们可以开发不同类型且安全可靠的应用程序,例如:
桌面应用程序;
网络应用程序;
分布式应用程序;
Web
服务应用程序;
数据库应用程序等。
.NET Framework/.NET Corer
.NET Framework
是微软公司推出的完全面向对象的软件开发与运行平台。
.NET Framework
具有两个主
要组件
:
公共语言运行时
(Common Language Runtime, CLR)
和类库。
公共语言运行时
:
公共语言运行时
(CLR)
负责管理和执行由
.NET
编译器编译产生的中间语言代码。由于共
语言运行库的存在,解决了很多传统编译语言的一些致命缺点,如垃圾内存回收、安全性检查等。
类库
:
类库我们比较好理解,就好比一一个大仓库里装满了工具。类库里有很多现成的类,可以拿来直接
使用。例如,文件操作时,可以直接使用类库里的
IO
类。
.NETCore
是适用于
Windows
、
Linux
和
macOS
的免费、开源托管的计算机软件框架
,
两者最直接的不同
点便是他们的运行环境,
.NET Framework
只能在
Windows
环境下运行,但
.NET Core
是跨平台的
编译
C#
语言是一种编译型语言,它的编译过程包括以下几个步骤:
1.
语法分析(
Parsing
):
C#
源代码在被编译之前,需要进行语法分析,将源代码转换成语法树。语
法分析器会检查源代码是否符合
C#
语言的语法规范,如果有语法错误,则会发出编译错误提示。
2.
语义分析(
Semantic analysis
):在语法和词法分析完成后,编译器会进行语义分析,检查源代码
是否符合
C#
语言的语义规范。语义分析器会检查变量的类型、作用域、函数调用等等,如果存在语
义错误,则会发出编译错误提示。
3.
代码优化(
Code optimization
):在语义分析完成后,编译器会进行代码优化,使生成的目标代
码更加高效和优化。代码优化包括删除死代码、常量折叠、函数内联等等。
4.
代码生成(
Code generation
):最后一步是代码生成,编译器会将优化后的中间代码转换成目标
代码(通常是机器码),并将目标代码输出到磁盘上的可执行文件中。
这些步骤中的前三个是编译过程中最为重要的部分,它们保证了程序的正确性和可靠性,同时也为
后面的代码优化和生成提供了必要的信息。
创建C#工程
开始使用
->
创建新的项目
->
模板选择:
C#
控制台应用
(.net framework) ->
创建
第二种方式
:
解决方案和项目的关系
1.
解决方案和项目都是
VS
提供的用于管理应用程序的容器
2.
一个解决方案可以包含一个或多个项目
3.
这些项目可以利用解决方案 连接在一起 统一编译统一更新
工程目录
1.
bin
bin
目录用来保存项目生成后程序集,它有
Debug(
调试版本
)
和
Release(
发布版本
)
两个版本,分别对应
的文件夹为
bin/Debug
和
bin/Release
,这个文件夹是默认的输出路径,我们可以通过:项目属性
—>
配
置属性
—>
输出路径来修改。
在添加引用时,
.NET
会记录添加的引用绝对路径,这些设置保存在
“
每用户
”
文件中,
(
Solution.csproj.user
),可以通过记事本打开查看。也可以在:项目属性
—>
通用属性
—>
引用路径里
面查看。如果设置复制到本地为
true
,在生成项目时会自动拷贝该
DLL
到项目生成文件夹中
(bin
目录
)
,
否则不会拷贝。在生成项目时,对所添加的引用的是绝对路径,而在运行时程序集默认只在当前所在的
路径下去找。要修改引用的路径,必须通过编程的方法去实现。使用
References
对象。
在
bin\debug\
目录中有两个文件,除了要生成的
.exe
或
.dll
文件外,还有个
.pdb
文件,这个
.pdb
文件中
就记录了代码中的断点等调试信息。一般移植或者打包程序只需要
Debug
文件即可,里面包含
.exe
文
件、
.dll
文件、
.ini
文件、
.xml
文件、
.pdb
文件、
.lib
文件、
.config
、
.manifest
文件、
.png
文件、
.gif
文
件、
.cur
文件、自定义文件夹等。
在
\bin\release\
目录下只有一个
.exe
或
.dll
文件,
Release
模式下不包含调试信息,并对代码进行了优
化。
2.
obj
obj
目录是用来保存每个模块的编译结果,在
.NET
中,编译是分模块进行的,编译整个完成后会合并为
一个
.DLL
或
.EXE
保存到
bin
目录下。因为每次编译时默认都是采用增量编译,即只重新编译改变了的模
块,
obj
保存每个模块的编译结果,用来加快编译速度。是否采用增量编译,可以通过:项目属性
—>
配
置属性
—>
高级
—>
增量编译来设置。