Initial commit
This commit is contained in:
@@ -0,0 +1,28 @@
|
||||
通常用法:
|
||||
解决值[[值类型和引用类型]]在函数内外部互相传递时的问题
|
||||
函数内部改外部传入也改
|
||||
==ref和out的区别:==
|
||||
ref:
|
||||
- 传入的参数必须初始化(赋值)
|
||||
- 方法内可读可写
|
||||
out:
|
||||
- 传入前**可以不初始化**
|
||||
- 方法内**必须赋值**,否则编译报错
|
||||
|
||||
语法:
|
||||
在函数传参时,两边都要加上修饰词
|
||||
ref:
|
||||
```Csharp
|
||||
static void ChangeValue(ref value)
|
||||
ChangeValue(ref 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
|
||||
```
|
||||
#基础
|
||||
@@ -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个变长参数 且必须放在末尾==
|
||||
#基础
|
||||
@@ -0,0 +1,34 @@
|
||||
概念:被命名的整型[[常量]]集合
|
||||
通常用法:存储玩家状态等,==和switch天生一对==
|
||||
|
||||
用int表示会导致非常难直观信息,可以用枚举给数值类型加名字
|
||||
|
||||
语法:
|
||||
声明地点:
|
||||
1.==namespace中(常用)==
|
||||
2.class或struct中
|
||||
声明枚举:
|
||||
```Csharp
|
||||
enum E_自定义枚举名
|
||||
{
|
||||
自定义枚举量, //自带一个下标0
|
||||
自定义枚举量2, //自动累加
|
||||
自定义枚举量3,
|
||||
自定义枚举量4 = 100 //手动设置下标
|
||||
}
|
||||
```
|
||||
|
||||
声明枚举变量:
|
||||
>自定义枚举类型 变量名 = 默认值;
|
||||
|
||||
案例:
|
||||
实例化枚举:
|
||||
E_自定义枚举名 e1 = E_自定义枚举名.自定义枚举量
|
||||
|
||||
注意:
|
||||
声明==枚举==和声明==枚举变量==是两个事情
|
||||
枚举最好不要用中文
|
||||
|
||||
可以和int、string类型[[格式转换]] //非常少用
|
||||
|
||||
#基础
|
||||
@@ -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 内部不能直接给字段赋值 → 为了效率,无隐式初始化
|
||||
#基础
|
||||
Reference in New Issue
Block a user