一、 基本背景知识
1)C#背景
VS和C# (C sharp) .Net(技术平台)--.netframework
1.1----4.8 5.0 6.0
2) 安装软件(2022)
熟悉下VS开发环境(IDE)背景 主题 设置字体
创建一个项目(控制台类型)--本质上生成一个文件夹(文件)
.cs :编码的源文件 。csproj:工程文件 .sln文件 解决方案文件
bin文件(debug --调试 Release--发布)
3)解决方案与项目的关系
(广义上的项目)解决方案:--多个项目(狭义项目)
4)计算机硬件基本结构( CPU 内存 硬盘 显卡 声卡 USB 网口 串口)
.exe文件--可执行文件(程序集)
编辑 编译 连接 运行(内存)
字节(8位)
5)熟悉下项目(控制台)
Console.WriteLine-打印
运行--F5 调试运行
断点--调试运行情况下 停下来(进行跟踪)开始执行不调试(ctrl+f5)
红色波浪线-错误 绿波浪线-警告
英文半角
注释和快捷方式 注释 // 单行注释 /* */ 多段注释 文档注释 ///
代码折叠器 #region #endregion
快捷方式:运行 --f5 f9-断点 f10-逐个方法执行 f11-逐条语句 ctrl+K+D
ctrl+z:后退 ctrl+y前进 ctrl+tab:两个文件之间快速切换 ctrl+j
C#中每条语句是分号结束 一般一条语句一行
Main是入口方法(代码写到Main中)
6) 读写( 写-write writeline 读 readkey readline read)
用一个数值来表示一个字符---编码 字符-----数值-解码
ASCII编码 a--97 b=98 0---48
格式化显示:将字符串按照一定的格式去显示
Console.writeline("{0}",数据)
Console.writeline($"{}")
string.format(""{0}",数据")
+ 号起连接作用--加号两边只要有一个是字符串
双引号括起来的是字符串 单引号括起来的是字符
二、.netframework的构成部分以及中间语言(MSIL(微软中间语言) CIL(公共中间语言))
.Net
.netframework
CLR:公共语言运行时(JIT(just-in-time) GC(garbage collection) 内存管理 异常处理等 )
(CTS CLS) 通用类型系统和公共语言规范
类库:dll文件微软提供的--方便我们快速编程实现不同功能
托管代码与非托管代码
C#.Net VB.Net---托管代码
c C++-----非托管代码
三、变量与常量(重点)
1 )变量的定义
定义:变量本质上就是内存中的一块数据(可以进行改变)---英文单词来表示这块内存(别名)
数据类型 变量的名; ---定义了一个变量
int m; uint n;
2)变量的命名规则与命名规范
命名规则:(1)变量的名字一般是由字母、数字、下划线 、@构成的组合,不能以数字开头
(2)变量名不能与关键字重复
(3)在同一个作用域里变量不能重复定义
补充:变量的作用域--花括号以内的就是属于同一个作用域(当变量离开花括号后就释放了)
命名规范:(1)见名知意 不要乱起名 更不要去用拼音
(2)按照两种规范(Camel-驼峰命名法 Pascal命名法)
Camel--goodGirlName-------变量----第一个单词的首字母小写 后面的单词首字母大写
Pascal--GoodGirlName-------方法 类 ---每个单词的首字母都大写
m_ 开头就是匈牙利命名法
3)变量运用的三要素
变量的定义 赋值 使用
注意:定义并且赋值但是没有使用警告 没有定义直接赋值和使用 定义了没有赋值直接使用一般也会报错
4)数据类型
从存储方式不一样划分()
堆和栈---内存 ---------值类型(数据直接存放在栈中的)引用类型
值类型:int short ushort uint long ulong byte sbyte float double decimal char 枚举 结构体 bool
引用类型: string 数组 接口 类 委托
对比栈和堆:
栈一般存放的是轻量类型的数据 访问速度快 后进先出 地址连续的
堆 一般存放的是重量级数据 访问速度慢 交给GC管理 不连续的
值类型----
整数:
int(有符号整型--4个字节) uint(无符号)byte(1个字节 无符号)
sbyte(1个字节 有符号) short(有符号 2个字节)ushort(无符号 2个字节)
long(8个字节 有符号)ulong(8个字节 无符号)
小数(浮点型):--因为你的数据有可能是个小数上面那些表示不了
float(f)(实数-单精度 4个字节 小数 6位) double(实数-双精度 8个字节 小数 15位)
decimal(m)(16个字节 小数 24位)
布尔 bool (1个字节 真/假 true false)false(0)true(1) 标志
字符类型 char(2个字节 )
结构体 struct
枚举 enum
引用类型----
string--字符串(由多个字符构成的 双引号)
数组
类
接口
委托
5)数据类型转换
数据类型转换必要性:
因为由前面的知识我们可以知道不同的类型占用的内存字节数量是不一样的,
那么数据和数据之间进行赋值的时候很有可能赋值符号=两边的数据类型不一致,
不一致在这里需要进行转换
数据类型转换(值--值 值-引用(string为代表))
(1) 值--值的转换----
小转大 -自动转换(隐式转换)
大转小--强制转换(显式转换)
小类型 变量=(小类型)大类型变量;
(2) 值--引用(string)
值--->引用(string) tostring()
引用(string)-->值 Convert.To(万能转换) Parse TryParse
6)常量
定义:const 类型 常量名=初始值;
1 常量定义时必须初值
2 常量中间不能改变值
readonly 常量----运行时常量
只能在类里定义,可以不赋初值,在构造方法更改值
只能通过对象调用,static readonly 相当于 const
区别:
1 const修饰的成员在调用的时候要用类名 readonly修饰的成员用对象名访问
2 const理解成一种编译性的常量 readonly可以理解运行时常量
3 readonly在定义的时候可以不赋初值 ,可以赋值。同时只能在构造方法中对它 进行赋值,在其它的方法是不可以的。const修饰的除了定义的时候任何地方都不可以改
4.readonly 只能在类中定义 const不是
5.static readonly等价于const功能 但是static readonly在定义的时候也可以不赋值也可以赋值。同时一样在静态构造方法中才可以改变值。
四、转义符,语法
“” “ ” null的对比:
“”--表示空字符但是是有内存的只是为空--string.empty
“ ”---这个表示空格字符 是有字符数据的
null--这是真正的空--这是根本没有申请内存的
string变量你一开始什么都不赋值时默认是null
转义字符:
转义字符也是一个字符 转义字符往往代表的是一种操作(回车 退格等)
'\'+字符共同构成的是一个字符
'\n'--换行 -换行输出
'\b'--退格删除
'\t'--tab键
'\r'--回车--光标回到当前这行输出 覆盖你前面的内容(看你的长度)
'\\'--反斜杠
‘\"’--双引号
\r-回车-光标回到当前这行输出 覆盖你前面的内容(看你的长度)
\n--换行-换行输出
@符号 :1 取消转义 2 原格式输出
波浪线
1)如果你的代码中出现了红色的波浪线,意味着你的代码中出现了
语法错误。
2)如果你的代码中出现了绿色的波浪线,说明你的代码语法并没有错误,
只不过提示你有可能会出现错误,但是不一定会出现错误。警告线