资讯动态

C#基础(持续更新中)

发布时间:2026/9/9 8:40:00 来源:尧图企业网站定制
一、复杂数据类型一枚举它是一个被命名的整型常量的集合一般用来表示状态、类型等等。1、申明枚举命名规范 枚举名 以E或者E_开头声明在namespace语句块中常用也可以在class语句中struct语句块中注意枚举不能在函数语句块中申明enum E_自定义枚举名{ 自定义枚举项名1 自定义枚举项名2 自定义枚举项名3 }2、申明枚举变量自定义的枚举类型 变量名 默认值;(自定义枚举类型.枚举项)E_PlayerType playerType E_PlayerType.Main; if(playType E_PlayerType.Main){ Console.WriteLine(主玩家逻辑); }else if(E_PlayType E_PlayType.Other){ Console.WriteLine(其它玩家逻辑); }3、枚举的类型转换枚举和int互转枚举可以直接强转成intint转枚举可以直接赋值//枚举转int int i (int)playType; //int转枚举 playType 0;枚举和string互转Parse后 第一个参数你要转为的是哪个枚举类型 第二个参数用于转换的对应枚举项的字符串转换完成后 是一个通用的类型 我们需要用括号强转成我们想要的目标枚举类型//枚举转string string str playType.ToString(); //string转枚举 playType (E_PlayType)Enum.Parse(typeof(E_PlayerType),Other);4、枚举的作用在游戏开发中对象很多时候 会有很多的状态比如一个玩家 有一个动作状态 我们需要用一个变量或标识 来表示当前玩家处于的是哪种状态综合考虑 可能会使用int来表示他的状态1行走 2待机 3跑步 4跳跃 ......等等枚举可以帮助我们 清晰的分清楚状态的含义提升代码的可读性5、枚举练习题定义QQ状态枚举并提示用户选择一个在线状态我们接受输入数字并将其转换成枚举类型using System; namespace Systeam01 { /// summary /// QQ状态枚举 /// /summary enum E_QQType { /// summary /// QQ状态 /// /summary Online, Leave, Busy, Invisible, } class Program { static void Main(String[] args) { Console.WriteLine(请输入QQ状态0在线1离开2忙3隐身); //ReadLine接收字符串类型需要强转成int类型 int type int.Parse(Console.ReadLine()); //int类型强转枚举类型 E_QQType qqType (E_QQType)type; Console.WriteLine(qqType); } } }千问给出代优码化int.Parse 会抛出异常如输入非数字字符串。更安全的做法是使用 int.TryParseConsole.WriteLine(请输入QQ状态0在线1离开2忙3隐身); // 定义一个变量来接收转换后的结果 int type; // 尝试转换如果用户输入的是数字返回 true 并赋值给 type否则返回 false if (int.TryParse(Console.ReadLine(), out type)) { // 转换成功进行强转枚举 E_QQType qqType (E_QQType)type; Console.WriteLine(你选择的状态是 qqType); } else { // 转换失败给用户一个友好的提示 Console.WriteLine(输入格式错误请输入数字); }二数组数组是存储一组相同类型数据的集合1、数组的申明变量类型[ ] 数组名变量类型[ ]数组名 new 变量类型[数组长度]变量类型[ ]数组名 new 变量类型[数组长度]{内容123......}变量类型[ ]数组名 new 变量类型[ ]{内容123......}变量类型[ ]数组名 {内容123......}2、数组的使用数组长度数组变量名.length获取数组中的元素数组中的下标和索引是从0开始的范围时0~length - 1修改数组中的元素直接赋值注意数据类型遍历数组用for循环遍历增加数组中的元素 数组初始化后是不能够直接添加新元素的需要新建一个数组将原数组内容赋值给新数组。删除数组的元素原理同上。查找数组中的元素遍历数组用if循环判断最后返回i。三二维数组使用两个下标索引 行标和列标来确定元素的数组1、二维数组的申明变量类型[ , ] 二维数组名;变量类型[ , ] 二维数组名 new 变量类型 [ 行,列 ];变量类型[ , ] 二维数组名 new 变量类型 [ 行,列 ]{{0行内容123...},{1行内容123...},{2行内容123...},...};变量类型[ , ] 二维数组名 new 变量类型 [ , ]{{0行内容123...},{1行内容123...},{2行内容123...},...};变量类型[ , ] 二维数组名 {{0行内容123...},{1行内容123...},{2行内容123...},...};2、二维数组的使用二维数组的长度//得到多少行 Console.WriteLine(array.GetLength(0)); //得到多少列 Console.WriteLine(array.GetLength(1));获得二维数组的元素第一个元素索引是0最后一个元素索引是长度-1修改元素索引位置后直接赋值遍历二维数组for(int i 0; i array.GetLength(0); i){ for(int j; j array.GetLength(1);j){ Console.WriteLine(array[i,j]); } }增加或删除数组中的元素把数据搬进新数组查找数组中的元素遍历四交错数组交错数组是数组的数组每个维度的数量可以不同1、交错数组的声明变量类型[ ] [ ] 交错数组名变量类型[ ] [ ] 交错数组名 new 变量类型[行数][ ];变量类型[ ] [ ] 交错数组名 new 变量类型[行数][ ]{一维数组1一维数组2......};(内部一维数组的数据类型要和交错数组数据类型相同变量类型[ ] [ ] 交错数组名 new 变量类型[ ][ ]{一维数组1一维数组2......};变量类型[ ] [ ] 交错数组名 {一维数组1一维数组2......};2、交错数组的使用数组的长度//行数 Console.WriteLine(array.GetLength(0)); //某一行的列数 Console.Write(array[0].Length);获取交错数组中的元素Console.WriteLine(array[i][j]);修改元素索引后赋值变量交错数组for(int i 0; i GetLength(0); i){ for(j 0; j array[i].Length; j){ Console.WriteLine(array[i][j] ); } Console.WriteLine(); }二、值类型和引用类型一值类型和引用类型的区别引用类型string 数组 类值类型除去string和数组之外学习到的其它数据类型intfloat...) 结构体1、使用上的区别值类型 在相互赋值时 把内容拷贝给了对方 它变我不变引用类型 的相互赋值 时 让两者指向同一个值 它变我也变2、为什么会有区别值类型 和 引用类型 存储的内存区域是不同的 存储方式是不同的值类型存储在 栈空间 —— 系统分配自动回收小而快引用类型 存储在 堆空间 —— 手动申请和释放大而慢二特殊引用类型stringstring非常特殊 它具备 值类型的特征 它变我不变string str1 123; string str2 str1; str2 321; Console.WriteLine(str1); Console.WriteLine(str2); //输出结果 123 321string重新赋值时 会在堆中重新分配空间缺点频繁的改变string 重新赋值 会产生 内存垃圾优化替代方案 在C#核心中进行讲解三、函数

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价