C#学习笔记 --- 简单应用

1.operator 运算符重载:使自定义类可以当做操作数一样进行使用。规则自己定。

2.partial 分部类: 同名方法写在不同位置,可以当成一个类使用。

3.索引器:使自定义类可以像数组一样通过索引值 访问到对应的数据。

4.params 数组参数 (变长参数) 修饰。对应参数放在最后一位。 传参的数组可以是0个或者多个。

5.重写

1.折叠代码:可以编写注解内容,折叠之后可以看注解内容。

#region 折叠后可以看到注释
#endregion

2.二进制十进制转化

3.十进制转二进制(10除以2 取余数 在除以2 直到1 再将结果从下到上链接)

4.C#命名变量的规范

不能重名,不能使用关键字,不能使用数字作为开头,不能使用特殊符号下划线除外。

5. 字符串的拼接。通过 + 。

通过 stirng.Format("测试{0},{1}",第一个占位符 0 ,第二个占位符 1 )
后续填充的数据数量一定要比字符串里面的占位符多,不然会报错。

6.operator 运算符重载 (有点类似于 lua 元表知识的 表的相加等操作。__Add......)

一般来说类和结构体不能做操作数去使用。但是通过operator 可以实现需求。

类的静态方法:operator 重载 XX 符号(参数最少有一个类类型)。

允许重载:传的参数的种类,顺序不同。

适用于 operator 的运算符:注意实际所需要的参数个数

算术运算符 + - * / % ++ --

逻辑运算符 !

位移运算符 & | ^ ~ << >>

条件运算符 > < >= <= == != 需要成对出现。例如:有 > 就要有 <。

7.operator 运算符重载 小例子。

8.里氏替换原则

object 万物之基类 引用类型 都用 as 获取数据。值类型都使用括号强转就行。

装箱,拆箱 发生在 object 类型和值类型之间。因为数据在栈.堆中进行了类型的转化。

10.继承里面的构造函数。

11.sealed 密封类的修饰。不允许再被继承。加强面向对象设计的规范性,结构性,安全性。

12.接口。interface

如果接口是 protected 。需要显示实现成员。使用权限命名。

​​​​​ ​

《1》接口小案例:硬盘,u盘 存储设备 读取设备 mp3 读取设备。

13. string 字符串的用法

14.stirngbuilder

15.结构体 和 类 的区别

16. 接口 和抽象类

17.事件 与 委托

18. 匿名函数 与 lambad 表达式。

19. 闭包。外层函数有临时变量,内存函数用到了外层函数的变量。会导致 变量的生命周期发生变化。这种行为称为闭包。

闭包中,内层函数用到的 变量的值取决于调用的时候 。其静止状态是什么数值。

《1》实例1:当调用委托的时候。int i 早就完成循环了。i 的固定值就是5。所以会打印5。

《2》实例2:使用临时变量存储当前循环的 i 一轮循环结束之后。因为下一轮 的index 和这一轮 的index 是两个不一样的变量。所以 index 就是最终值了。所以存的才是 0 ,1, 2, 3, 4

20. list 的排序。自定义 sort 排序。

《1》默认对数值类型是可以排序的。默认是升序。

《2》自定义排序。通过实现接口

《3》通过委托方法的形式。写法其实和 lua 中的 table.sort(list,fucntion(a,b) { 判断逻辑 }类似。

<1>第一种方式,全写。

<2>使用匿名函数。

<3> 使用 lambad 表达式

<4> 使用 lambad表达式 结合 三目运算符 可以简洁的 达成这个效果。

21.逆变 in 和 协变 out :在泛型委托 泛型接口中使用。

《1.》逆变协变的作用。

以 协变 out 修饰的泛型,其类型只能用作返回值。

以 逆变 in 修饰的泛型,其类型只能用作参数。

《2》逆变协变在泛型委托的作用。

遵循里氏替换原则:父类声明的变量,可以装载子类。

父类泛型委托装载子类泛型委托的时候 需要使用 out 协变 进行修饰。

子类泛型委托装载父类泛型委托的时候需要使用逆变 in 进行修饰。

22. 线程 Thread

23. 预处理器指令。一般不同Unity版本可能执行不同的逻辑。不同的平台会执行不同的逻辑。会用到。

相关推荐
小奶包他干奶奶4 小时前
Webpack学习——Loader(文件转换器)
前端·学习·webpack
小奶包他干奶奶4 小时前
Webpack学习——原理理解
学习·webpack·devops
励志成为美貌才华为一体的女子4 小时前
强化学习PPO和GRPO逻辑学习
学习
tobebetter95274 小时前
How to manage python versions on windows
开发语言·windows·python
meichaoWen5 小时前
【Vue3】vue3的全面学习(一)
前端·javascript·学习
FFF团团员9095 小时前
树莓派学习笔记3:LED和Button
笔记·学习
9***P3345 小时前
PHP代码覆盖率
开发语言·php·代码覆盖率
CoderYanger5 小时前
优选算法-栈:67.基本计算器Ⅱ
java·开发语言·算法·leetcode·职场和发展·1024程序员节
jllllyuz5 小时前
Matlab实现基于Matrix Pencil算法实现声源信号角度和时间估计
开发语言·算法·matlab
多多*6 小时前
Java复习 操作系统原理 计算机网络相关 2025年11月23日
java·开发语言·网络·算法·spring·microsoft·maven