搭建开发环境
1.C#概述
1.1 C#语言的特点
C#是一门面向对象的语言,是需要通过编译器编译的语言,在.net平台运行的
1.2 net平台是什么?
.net是一款免费的开源平台,可以生成不同应用,web应用/桌面开发/游戏......
1.3 C#的应用领域
web应用: 浏览器网站
桌面应用: Windows程序,Linux程序,MacOS程序
游戏应用: Unity框架
服务应用: 构建应用服务器
C#人工智能: 视觉 模型
1.4 开发环境
- 安装开发者工具 Visual Studio 2022
- 2022下载链接
- 具体安装步骤
2.数据
2.1 什么是数据?
2.2 C#如何处理数据的?
- 通过表达式对数据进行运算处理
- 用变量将数据存储在与运行内存中
- 编程语言如何管理程序产生的数据
- 通过数据类型分类方式,对数据进行存储.以及分类管理
3.变量
3.1.作用
从程序执行的角度:变量作用:存储程序运行时产生的数据.理解为:保存表达式运算结果
从栈内存的角度:定义的变量为栈中的key,value为保存的数据
3.2.定义
- 语法
Type VarName = Value
- Type 数据类型
- VarName 变量名
- Value 值
2.变量名命名规则
大驼峰:数组字母下划线
不能以数组开头
3.3变量作用域
变量作用域:在代码块中声明的变量,能够在哪里使用,简单理解:变量作用域决定了变量访问的权限
规则细节:
在哪个代码块{}中定义的变量,只能在代码块内部使用;
for()小括号与循环体中定义的变量,只能在for中使用
if else Switch 中定义的变量,只能在分支语句内部使用
内层代码块可以访问外层代码块中变量
类中定义的static public 变量可以在全局中使用(全局:当前工程下所有.cs文件)
函数中定义的变量,只能在函数内部使用,不同函数之间,变量不可以相互访问
3.4.变量的使用规则
1.第一步:看通过什么方式访问的变量?
1.只有变量名
2.类名.变量名
3.变量名.变量名
1.如果是只有变量名 在当前代码块中查找,按照编写方式往上找,看是否声明变量,如果没有继续看外层代码块,直到类的代码块为止.如果都没有,报错;如果找到了,那么使用的是该变量距离使用时最近的一次赋值,[看最近=赋值运算符]
2.如果是 类名.变量名; 直接去该类中查看是否有: static public Type VarName; 没有:报错,有:使用的是该变量,注意:使用的为 该变量 最近一次运算的赋值,[看的表示赋值运算符][看的是上一次运算结果]
3.如果是只有变量名.变量名是访问实例对象上属性的值;
4.看实例对象的类是否存在
5.看是哪个对象上的属性
6.看该对象的属性最近的赋值运算符
3.5.常量
1.语法
const Type VarName = Value
- const 定义的常量
- Type 数据类型
- VarName 变量名
- Value 值
2.特点
只能赋值一次
3.应用
- 固定不变的地址:工业相机lp地址 线上服务器地址
- 配置参数: Plc 西门子 三菱 欧姆龙 等配置信息
4.数据类型
4.1 值类型
1.分类
整形: byte ubyte short int long
浮点型: float double双精准 decimal 128位的精准数字
字符型: char
布尔值: bool
2.作用
- 整形与浮点型用于描述数字
- 字符型用于描述单个字符,单个字符可以被ASCI编码为具体的数字
- 布尔值 用于控制 某个代码块是否执行:例如:分支 循环
3.存储位置
存储在栈内存中,值类型的拷贝,变量拷贝的是值,不是地址
4.区分方式
- 整形区别: 1.占据内存空间大小不同 2.数值的范围不同
5.注意
注意:变量赋值值类型,表示:该变量存储一个数组. 注意与变量赋值引用类型意义上区别
4.2 引用类型
1.根据索引值的类型划分:
1 有索引值的类型
字符串: Array ArrayList SortList
特点:
- 索引值从0开始的
- 索引值是唯一的
- 每个索引值都会对应一个元素
- 通过索引值获取value的方式; data[索引值]
2 键值对的类型
HashTable
SortList
自定义对象
键值对结构特点:
- key 键 是唯一的,重复报错
- key 一般为string,可以为其他类型, int double char
- key value 成对存在的,可以通过key 找到value的
3总结:
- 字符串 String
- 数组 Array
- 集合 ArrayList/HashTable/SortList/Stack/Queue
- 对象 class/object
- 结构体 stuct
4.3 枚举型
1.语法
修饰符 enum 枚举名{
枚举值,
枚举值,
}
枚举名 变量名 = 枚举名.枚举值
int num = (int)枚举名; 枚举值对应的数字
枚举名 变量名 = ()枚举名).数字 数字对应的枚举
- 修饰符: 作用: 约束枚举使用范围
- enmu 作用: 创建枚举
- 枚举名: 自定义的, 开头字母大写, 大驼峰
- 枚举值: 根据业务实际应用场景取名, 注意: 枚举值是枚举类型
2.案例代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 枚举
{
internal class Program
{
static void Main(string[] args)
{
Day day = Day.Monday;
Console.WriteLine(day);
Console.WriteLine((int)day);//枚举转整数
Console.WriteLine((Day)1);//整数转枚举
Console.WriteLine((Day)100);//超出枚举范围会报错
Console.ReadKey();
/// 枚举值:有两面: 1.枚举值(你写的) 2.数字
/// 每个枚举值都有一个默认的数字,默认从0开始 或者自定义数字
/// 应用: 视觉工具的下拉框,用枚举值类型
}
}
public enum Day
{
Monday,Tuesday,Wednesday,Thursday,Friday=99,Saturday,Sunday
/*自定义数组: 定义前数组元素不受影响,定义后的数组元素受影响*/
}
}
3.特点
1.枚举类型有两个值,一个是:枚举值(我们自己写的) 另一个是:每个枚举值对应一个数字
5.表达式与运算符
5.1 运算符分类
- 算数运算符 + - * / % ++ --
- 比较运算符 < > <= >= == !=
- 逻辑运算符 && || !
- 赋值运算符 = += -= %= *=
- 连接运算符 +
- 当加号遇到字符串,作用就是拼接字符串; 结果: string
- 赋值给变量赋值的. 不会产生新的数据
- 注意在条件表达式中,不要把等于写成赋值
5.2 运算符优先级
你希望哪两个操作先运算; 就用小括号括起来
运算结果与最后运算的运算符有关
5.3 运算符运算注意事项
1:如果表达式中出现逻辑运算符或者比较运算符,运算结果一定是布尔类型
2: 不同数据类型之间运算:无法发生隐士转化的数据类型之间不能运算
3:其他值类型和字符串遇到加号后,都会变为字符串
5.4 什么是表达式
操作数和运算符 形成表达式
特殊表达式:函数表达式,, 重点 : 掌握函数表达式运算过程
什么时候写表达式?
拆分业务后,将业务分析为n个步骤后,开始写表达式了.
5.5 表达式特点
表达式一定有返回结果,产生新的数据
6.数据类型转化
不同数据类型之间转化不报错前提,数据类型之间有点关系
6.1隐士转化
- 特点: 小范围转化大范围(内存空间大小,最大值最小值范围) 例如: int转double char转int
- 注意: 指发生在值类型之间.
- 发生情况: 遇到运算符的时候,才会发生转化
6.2显示转化
- 需要在代码中明确声明转化的类型.
- 容易丢失精准度: 例如 double转int
- 语法 : (Type)数据;
- 不是所有的数据类型之间都可以显示转化. 值类型或者枚举值可以显示转化
6.3装箱和拆箱
装箱: 一个值类型转化为引用类型的过程叫做装箱
int a = 123;
object b = (object)a;
拆箱: 引用类型转化为值类型的过程叫做拆箱
object a = 123;
int b = (int)a;
6.4强制转化
- Parase
- Cpnvent
- api.