- 博客(40)
- 收藏
- 关注
原创 C# 构造函数(无参/有参/重载/this)+析构函数(终结器)|GC 垃圾回收
/ 无参构造函数Name = "张三";执行场景// 张三// 张三每次 new 无参构造对象,默认初始化 Name=张三,Age=10执行场景People p3 = new People("李四",20);// 李四People p4 = new People("王五", 20);// 王五作用:创建对象的同时,直接给属性赋值,不用额外写代码赋值。析构函数(终结器):在对象被 GC 垃圾回收销毁时,系统自动调用的方法,用于释放资源、清理内存。~People()
2026-05-31 20:51:31
259
原创 C# 字段与属性(get/set访问器、三种属性写法、只读属性)+属性拦截例子(get动态计算 + set数据校验)
只写get、不写 set,属性变为只读属性外部只能读取,无法赋值修改字段存数据,属性控读写外部赋值触发 set,外部取值触发 getvalue 是 set 专属关键字,代表外部传入的值自动属性:系统自动生成隐藏字段,最简写法,项目首选只有get没有set → 只读属性,禁止赋值可以在set中做数据校验,保证数据安全本案例演示属性 get/set 拦截的两大核心用法set 拦截:对外部传入的数据做合法性校验,非法数据直接抛异常,保护数据安全get 拦截。
2026-05-31 20:51:18
133
原创 C# Stack栈 / Queue队列+所有集合 终极一页汇总(全覆盖、零遗漏)
/ 1.泛型栈(推荐、类型安全、无装箱拆箱、项目主流)// 2.非泛型栈(过时、object类型、不安全、有装箱拆箱、仅考试考察)数组:固定长度、性能最高、不能扩容ArrayList:动态扩容、老旧不安全、被List替代List:动态有序、泛型安全、列表王者Hashtable:老旧键值对、不安全、被字典替代Dictionary:无序键值对、高性能、项目首选SortedList:自动按键排序、唯一可索引键值对集合Stack:先入后出、栈顶操作Queue:先入先出、队头操作。
2026-05-30 19:34:07
294
原创 C# Hashtable 哈希表+SortedList 有序键值对集合
和 Dictionary 功能一致,都是键值对存储。底层基于:Key 通过哈希函数算出哈希码 → 直接定位存储位置,查找速度极快。
2026-05-30 19:33:54
322
原创 C# Dictionary 字典集合+数组、List、Dictionary 三者终极对比
字典是键值对(Key-Value)集合。Key(键):唯一、不可重复,类比数组下标数组下标:只能是 int 类型字典 Key:可以是任意类型(int、string、枚举等)Value(值):根据键存储、读取的数据,可以重复通过唯一键精准取值,查询速度远超数组、List。2. 初始化带数据三、字典全套常用 API(你代码全覆盖)1. 添加键值对 Add()注意:添加重复 Key 直接报错,键唯一不可重复。3. 获取全部键 / 全部值开发规范:一般直接使用,不用单独
2026-05-29 17:39:30
424
原创 C#ArrayList 和 List<T>核心对比和数组对比
对比项ArrayListList<T>泛型非泛型泛型集合类型安全不安全,任意类型混搭安全,固定单一类型装箱拆箱有,性能低无,性能高类型转换取值需要强转无需转换使用状态过时、淘汰主流、推荐。
2026-05-29 17:39:13
616
原创 C# ArrayList 动态集合(接口/区别/API/深浅拷贝)+ List<T> 泛型集合
List<T> 是泛型动态集合T:代表任意指定数据类型(int、string、自定义类)只能存储相同类型数据,类型高度安全无装箱、无拆箱,性能远优于 ArrayList长度动态可变,无需像数组一样固定长度List<T> 泛型集合,类型安全、无装箱拆箱、性能高动态长度,优于固定长度数组,全面替代 ArrayList元素个数:集合Count,数组LengthRemoveAll 是高阶方法,可条件删除,返回移除个数数组高阶是【类名调用】,List高阶是【对象调用】
2026-05-29 17:38:58
372
原创 C# 冒泡排序+选择排序 + Array.Sort 自定义排序
Sort 可以传入比较函数,实现自定义升序、降序、复杂排序返回负数 x在前,返回正数 y在前,返回0不变// 升序// 降序。
2026-05-28 20:01:27
375
原创 C# 局部方法 + Lambda表达式 + 三大委托和三大委托的区别和手写 Array.Find 底层源码原理(自定义MyArray.Find)
Lambda 本质是匿名函数(箭头函数),专门用来当做方法参数(回调函数)使用。= 0;1. 局部方法就近原则:内部方法优先于外部同名方法2. Lambda是匿名函数,不能单独语句存在,必须赋值或当参数3. 单参数可省括号,无参/多参数不能省括号4. Func有返回值、Action无返回值、Predicate固定返回bool5. 数组高阶方法只识别 Predicate,不识别 Func(经典报错)6. Where筛选结果不是数组,必须 ToArray() 转换可以单独调用委托方法。
2026-05-28 20:00:48
378
原创 C# 数组属性和方法(Clear / Copy / IndexOf / LastIndexOf)
不会删除数组长度,只是恢复默认值清空规则:起始下标 + 清空个数,不能越界Length总个数,Rank维度数,LongLength超大长度Clear清空为默认值,不改变数组长度Copy值类型复制相互独立,引用类型复制共享地址IndexOf正序找第一个,找不到返回-1LastIndexOf倒序找最后一个string.Join一键拼接输出数组全部元素。
2026-05-27 20:39:14
193
原创 C# 数组 最终完整版全套笔记(一维+多维+交错+引用类型+对象数组)
1. 先声明、后开辟空间:int[] arr;2. 指定长度+初始化元素:int[] arr = new int[3]{1,2,3};3. 不指定长度自动推断:int[] arr = new int[]{1,2,3};4. 最简字面量:int[] arr = {1,2,3};指定维度长度:int[,] arr = new int[2,3];自动推导维度:根据嵌套大括号自动识别行列数交错数组是数组套数组,外层数组的每一个元素,都是一个独立的一维数组。存储自定义类对象。
2026-05-27 20:38:37
291
原创 C#一维数组,多维数组,交错数组,三者对比
int[] ages;// 开辟长度为10的空数组数组:固定长度、存同类型、下标从0开始int默认0、bool默认false、string默认null、char默认\0四种数组定义方式,长度可指定可自动推断for可下标可修改,foreach简洁不能下标不能改object数组万能存储,但是需要类型转换禁止下标越界:最大下标=长度-1直接打印数组名,输出数组类型名称查询速度快(通过下标直接定位)结构简单、顺序存储。
2026-05-26 19:27:03
860
原创 C# ToCharArray + foreach遍历 + String与StringBuilder
string 不可变,修改产生新对象,适合少量文本StringBuilder 可变,直接修改原内存,适合大量拼接ToCharArray() 字符串转字符数组foreach 只读遍历,简化数组遍历Length是实际长度,Capacity是容器容量StringBuilder核心方法:增、插、删、清、换。
2026-05-26 19:26:44
567
原创 C#String字符串
1. 直接赋值(最常用)string s = "内容";string s1 = "特朗普";2. 换行定义 \r\n\r\n 代表回车换行,实现代码内换行输出。string s2 = "锄禾日当午,\r\n汗滴禾下土";// \r\n 代表换行3. 转义字符 \\字符串中想要输出单个 \ 、引号等特殊符号,必须前面加 \ 转义。例如:想要显示 \ ,必须写 \\string s3 = "锄禾日当午,\\汗滴禾下土";4. @原始字符串(重点)取消所有转义、保留原生格式、保留换行、路径专用。
2026-05-25 10:16:58
569
原创 C#随机数
4. a-z ASCII范围:97~122,取值写 Next(97,123)原理:根据一套固定算法 + 初始种子,批量计算出一组数字,依次取出使用。属于安全加密随机数,比Random更安全,用于密码、机密密钥生成。使用场景:随机点名、抽奖、验证码、账号注册、唯一标识生成。作用:密码加密、文件完整性校验、数据防篡改、数字签名。原因:循环执行速度极快,系统时间种子几乎一致,导致。根据系统时间、硬件ID加密计算生成,128位唯一值。订单号、产品密钥、唯一用户ID、文件唯一标识。作为种子,保证每次运行随机数不同。
2026-05-25 10:16:42
366
原创 C#DateTime时间类,时间对象的计算和比较
取时间:DateTime.Now拆时间:Year、Month、Day、Hour、Minute、Second格式化:ToString("yyyy-MM-dd HH:mm:ss")转时间戳:DateTimeOffset + ToUnixTimeSeconds戳转回时间:FromUnixTimeSeconds + LocalDateTime* 日期对象转成字符串time.ToString("yyyy")* 2从日期数字格式转成时间对象。
2026-05-24 14:59:24
555
原创 C#参数区别
规则:定义、调用都写 out,方法内部必须给 out 参数赋值,调用时实参可以不初始化。铁则:必须是数组,只能放在所有参数的最后一个调用直接传值,不用手动 new 数组。不带 static:属于对象,必须 new 对象 再调用:对象.方法名()带 static:属于类,调用:类名.方法名() / 同类直接写方法名。void:无返回值,只能在方法内输出,不能用变量接收。规则:定义、调用都要写 ref,实参必须提前赋值。实参:调用方法时,传进去的真实值 / 变量。对象类型:可以改属性,不能 new 新对象。
2026-05-24 14:58:45
280
原创 C#方法params参数
/params:参数列表 允许传递不定数量的参数,//int[] a;参数a就是整型的容器,可以存储多个整型的数// a.Length 就是容器的长度//string[] a 存放字符串的容器//bool[] b 存放bool的容器✅ 必记知识点(核心,直接背):params是C#中用于实现不定数量参数传递的关键字,核心作用是:允许调用方法时,传递任意数量(0个、1个、多个)的同类型参数。
2026-05-23 10:53:06
707
原创 C#方法out输出参数
out是C#中用于实现输出参数的关键字,核心作用是让一个方法返回多个结果(弥补单个return只能返回一个值的不足)。out具备引用传递的特点:方法内修改out参数,会直接影响外部实参(与ref类似,但使用规则有本质区别)。核心定位:out的核心是“传出数据”,而非“传入数据”,适合需要通过方法向外传递多个结果的场景。// 格式:修饰符 static 返回值类型 方法名(out 形参类型 形参名)// 注意:out参数必须在方法内部赋初始值,否则编译报错。
2026-05-23 10:52:53
327
原创 C#方法in参数
/ 格式:修饰符 static 返回值类型 方法名(in 形参类型 形参名)// 核心禁忌:方法内部不能修改参数本身// 场景1:in作用于值类型(int)// a = 100;// 报错:in使参数只读,不能修改值类型参数的值// 仅读取参数值,合法// 场景2:in作用于引用类型(自定义类People)// 允许:修改对象的属性值// 报错:修改形参指向(new新对象),违反只读限制in必须写在形参类型前面(正确:in int a;错误:int in a),否则语法报错。
2026-05-22 11:42:15
735
原创 C#方法值传递和引用传递ref参数实现
值传递 = 传递副本(值类型传值,引用类型传地址)。值类型:改形参 → 不影响实参。引用类型:改属性 → 影响实参;new新对象 → 不影响实参。关键区分:值传递的核心是“副本”,引用类型的影响与否,取决于“修改的是对象内容还是对象指向”。//传递的参数类型是值类型Console.WriteLine("a修改之前的值"+a);a = 20;// 修改a的值✅ 必记知识点(核心):形参a:int类型(值类型),接收实参a1拷贝过来的值(10)。
2026-05-22 11:41:50
549
原创 C#方法返回值
返回值:方法执行完成后,返回给调用者的“结果”,用于在方法外部使用方法的执行结果(区别于无返回值仅在方法内部输出)。返回值的两种类型:无返回值(void)、有返回值(具体类型:int、string、自定义对象等)。核心语法:方法定义时,用“返回值类型”替代void(有返回值),无返回值固定写void,且必须遵循语法规则。无返回值:void + 不写return + 直接调用,结果仅内部使用。有返回值:具体类型 + 必须写return(类型一致) + 用对应变量接收。
2026-05-21 21:12:25
575
原创 C#类和对象,值类型与引用类型
/ 语法格式: 修饰符 class 类名 { 类的内容(字段、属性、方法) }修饰符 class 类名// 类的内部内容(字段、属性、方法)1. 类的基本语法2. 类的修饰符(重点,必记)// 修饰符作用:控制类的访问范围,决定这个类能在哪些地方被使用public:公共的、公开的,最常用,可在整个项目的任何地方访问(比如Student类用public,才能在Main方法中使用);private:私有的,只能在当前类内部访问,不能用于定义类(定义类用private会导致无法创建对象);
2026-05-21 21:11:51
363
原创 C#方法的定义与调用,方法的参数传递
原注释原文://1定义方法;//public 方法修饰符,一般定义公共的;//static 静态的方法(目前使用static) ,不写static 非静态方法;//void 方法的返回值,无返回值 不能赋值给一个变量;//Test 方法名字 符合大驼峰命名规则;//(int a,int b,) 参数列表;//{} 方法体,以下逐部分拆解语法、规范和细节。// 完整语法格式(对应原注释)修饰符 static(可选) 返回值类型 方法名(参数列表)方法体;// 具体的功能代码。
2026-05-20 20:06:49
886
原创 C#goto结构,可空类型
值类型(int、double、bool、DateTime 等)默认不能为 null直接报错可空类型:让值类型可以存 null,表示 “空、没赋值、未知”语法:值类型?int?num = null;double?d = null;bool?可空类型语法:类型?,如 int?作用:让值类型可以为 null.HasValue 判断是否有值.Value 获取值,null 时会报错??:null 时取默认值可空 → 普通值类型不能直接赋值。
2026-05-20 20:02:09
585
原创 C#math函数
Math.Abs():绝对值Math.Max()/Min():2 个数最大 / 最小值Math.Pow(a,b):a 的 b 次方(作业最常用,算 22222 必用)Math.Sqrt():开平方Math.Round():四舍五入;Ceiling向上;Floor向下Math.PI:圆周率。
2026-05-19 19:55:37
611
原创 C#双层for循环
外层循环控制行数 / 轮数内层循环控制每行数量 / 内容外层执行一次,内层执行一圈内层循环结束,才会回到外层双层循环 = 大循环套小循环外层循环控制行数 / 轮数内层循环控制每行数量 / 内容外层跑 1 次,内层跑一圈break:跳出当前循环continue:跳过本次,继续下次内层结束,才会回到外层。
2026-05-19 19:55:22
614
原创 C#for循环
循环条件,布尔值true/false,条件成立才执行循环体,和 while 小括号里的条件一模一样。个位:i%10 十位:i%100/10 百位:i%1000/100 千位:i/1000。,只能在 for 循环里用,外面访问不到;迭代更新,循环变量自增 / 自减,比如i++、i--,用来改变条件,避免死循环。初始化变量,只执行1 次,一般用来定义循环变量,比如 int i=0;2.i=1 → 1<5 ✔ → 输出 1 → i 变成 2。3.i=2 → 2<5 ✔ → 输出 2 → i 变成 3。
2026-05-18 09:32:19
739
原创 C#while循环,break,continue,do...while循环的区别
while:先判断,后执行 → 可能一次都不跑do…while:先执行,后判断 → 至少跑一次作用:直接跳出【整个循环】,只要遇到 break,循环立刻结束,后面的循环全部不执行作用:跳过【本次循环】,继续下一次,只跳过当前这一圈,循环不会结束,继续跑4.break 和 continue 的核心区别(超级好记)break:结束整个循环 → 彻底不玩了continue:跳过本次 → 继续玩下一把。
2026-05-18 09:32:06
453
原创 C#switch语句
/ 枚举类型:值类型Spring,//春天Summer,//夏天Autumn,//秋天Winter //冬天// 结构体 值类型//类 引用类型。
2026-05-16 10:21:03
176
原创 c#运算符2
/ &:只要一个为false 整体为false 一个条件为false 另外一个正常走// && :只要一个为false 整体为false ,一个条件为false 另外一个不再判断了//|:只要一个为true 整体就是True//|| 只要一个为true 整体就是true 会短路//重点: &&并且 ||或者!取反。
2026-05-14 17:29:40
129
原创 c#结构体和变量
/定义结构体类型 : struct 名称{}//声明一个结构体的变量//给结构体里面的数据赋值,结构体变量.数据=值Console.WriteLine("矩形的面积为:"+ juxing.length * juxing.width);//定义长方形的结构体// public 公开的 结构体其中的一个数据 长度// 宽度。
2026-05-13 20:06:04
29
原创 c#项目结构,变量和变量类型,枚举类型
//using System; 使用命名空间//namespace:命名空间,防止了功能或者类命名冲突,可以包含不同的类。可以包含其他命名空间//namespace _1项目结构: namespace关键字, _1项目结构命名空间命名
2026-05-12 20:09:25
177
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅