Initial commit

This commit is contained in:
2026-04-13 15:40:15 +08:00
commit 02810617db
40 changed files with 849 additions and 0 deletions
+28
View File
@@ -0,0 +1,28 @@
通常用法:
解决值[[值类型和引用类型]]在函数内外部互相传递时的问题
函数内部改外部传入也改
==ref和out的区别:==
ref
- 传入的参数必须初始化(赋值)
- 方法内可读可写
out
- 传入前**可以不初始化**
- 方法内**必须赋值**,否则编译报错
语法:
在函数传参时,两边都要加上修饰词
ref
```Csharp
static void ChangeValueref value
ChangeValueref a
```
案例:
原型在[[值类型和引用类型]]笔记中
注意:
==out不是用来让内外值一定不等==
==ref传入的参数必须初始化==
如果传入引用类型且内外不同,推荐new一个
#基础
@@ -0,0 +1,46 @@
概念:
==引用类型:string、数组、类==
==值类型:剩下都是,包括数组、enum、结构体==
值类型默认都是0
bool类型是false
引用类型默认值是null
使用区别:
值类型:在相互赋值时,把内容进行拷贝 //他变我不变
引用类型:把相互赋值时,把==地址==进行拷贝 //他变我也变
原因:
值类型和引用类型 存储的内存区域不同,存取方式也不一样
值类型:栈空间 —— 小但是快 (0GC)
引用类型:堆空间 —— 大但是慢 (且有GC)
案例:
值类型:
```Csharp
static void ChangeValue(int value)
{
value =3:
}
static void Main(string[] args)
{
int a = 1;
ChangeValue(1);
cw(a);
}
//仍然输出1
```
引用类型:
```Csharp
static void ChangeValue(int[] value)
{
value =99:
}
static void Main(string[] args)
{
int[] a = {1};
ChangeValue(a);
cw(a[0]);
}
//输出99
```
#基础
+23
View File
@@ -0,0 +1,23 @@
概念:
解决函数传递时需要传递多个(不确定具体个数)参数的问题
通常用法:
语法:
关键字:params
案例:
```Csharp
static int Sum(params int[] arr)
{
//具体方法
return value;
}
Sum(1,2,3,4,5,6,7); //都会存入arr里
```
注意:
==params关键字后面必须是数组==
==最多只能有1个变长参数 且必须放在末尾==
#基础
+34
View File
@@ -0,0 +1,34 @@
概念:被命名的整型[[常量]]集合
通常用法:存储玩家状态等,==和switch天生一对==
用int表示会导致非常难直观信息,可以用枚举给数值类型加名字
语法:
声明地点:
1.==namespace中(常用)==
2.class或struct中
声明枚举:
```Csharp
enum E_自定义枚举名
{
, //自带一个下标0
2, //自动累加
3,
4 = 100 //手动设置下标
}
```
声明枚举变量:
>自定义枚举类型 变量名 = 默认值;
案例:
实例化枚举:
E_自定义枚举名 e1 = E_自定义枚举名.自定义枚举量
注意:
声明==枚举==和声明==枚举变量==是两个事情
枚举最好不要用中文
可以和int、string类型[[格式转换]] //非常少用
#基础
+42
View File
@@ -0,0 +1,42 @@
概念:
自定义变量类型 类似枚举
==数据和函数的集合==
是[[值类型和引用类型|引用类型]]
通常用法:
解决复杂类型数据的存储
写namespace层级中
语法:
关键字struct
必须有变量
构造函数(可选)
函数(可选)
案例:
```Csharp
struct Student
{
int age;
bool sex;
int number;
string name;
void speak(){}
}
```
注意:
可以声明变量和方法、构造方法
甚至可以声明别的结构体,但是不能用自己声明自己
==不能在结构体内初直接给成员初始化==
==和static class相反!!!==
==`struct` 本身就是[[值类型和引用类型|值类型]]、可实例化、可复制、可栈上分配==
==`static class` 的设计目的:**只装静态成员,不能实例化**==
==邪修:==
`static class`:纯工具类,不能 new
`struct`:值类型,必须能 new、复制、栈分配 → 不支持 static
struct 内部不能直接给字段赋值 → 为了效率,无隐式初始化
#基础