C#复习笔记(二)
枚举
用来表示状态、类型等
可在namespace、class、struct语句块中使用
不能在函数语句块中申明
switch和枚举可以配套使用
enum E_枚举名字{}
enum E_D1ao
{
Sing,
Jump = 6, //枚举项默认值变为6,后续的Rap默认值就为7
Rap,
}
E_D1ao d1ao = E_D1ao.Sing //默认值为Sing
switch(d1ao)
{
case E_D1ao.Sing:
//唱
break;
caseE_D1ao.Jump:
//跳
break;
case E_D1ao.Rap:
//Rap
break;
}
//枚举类型转换,强转直接转换成0,因为Sing的枚举值为0
int i = (int)d1ao.Sing;
//还可以从数字转换成枚举
d1ao = 6;
string str = d1ao.ToString();
//str为Jump
//字符串转枚举
(E_D1ao)Enum.Parse(typeof(E_D1ao),"Other")
数组
GetLength()得长度
一维数组:
申明了什么类型,数组内就只能放什么类型
int[] arr;
int[] arr = new int[6];
int[] arr = new int[3]{1,2,3};//如果前面申明了长度,用了{}必须放满
int[] arr = new int[]{};
int[] arr = {};
增:申明一个长度更大的新数组,把原数组遍历至新数组,多出的长度就可以放入新的数
删:反上即可
查:查下标
二维数组:
int[ , ] arr ;
int[ , ] arr = new int[2,2];
int[ , ] arr = new int[2,2] {{1,2},
{3,4}};
int[ , ] arr = new int[,] {{1,2},
{3,4}};
int[ , ] arr = {{1,2},
{3,4}};
交错数组:
int[][] arr;
int[][] arr = new int[3][];
int[][] arr = new int[3][]{new int[]{1,2,3} , new int[]{1,2} , new int[] {1} }
int[][] arr = {new int[] {1,2,3}, new int[]{1,2} , new int[] {1} }
值类型和引用类型
值类型:
无符号整型、有符号类型、浮点数、特殊类型、char、bool、结构体
引用类型:
数组、类、string(特殊的引用类型,它变我不变)
两者的区别:
值类型:在互相赋值时把内容拷贝给对方,它变我不变
存储在栈上——系统分配,自动回收,小而快
引用类型:在互相赋值是让两者指向同一个值,它变我也变
存储在堆上——手动申请和释放,大而慢
函数
写在class和struct中
多返回可以使用数组:return new int[]{a,b};
return可以不执行后面的内容,直接跳到函数外部
函数参数修饰符ref和out
传入的值类型参数在内部修改时,或引用类型参数在内部重新申明时,使外部的值发生变化
ref、out的区别:
ref传入的变量必须(在外部)初始化,out不用
out传入的变量必须在内部赋值,ref不用
变长参数params
params int[] arr //int类型的变长参数数组,可传入n个int参数
参数默认值
可选参数必须写在普通参数后面
可以设置多参数默认值
//没传入str参数,就默认输出"只因你太美"
static void Speak(string str = “只因你太美”)
{
Debug.Log(str);
}
重载
函数的重载和返回类型无关
参数数量不同、数量相同类型不同、数量相同顺序不同、ref和out、变长参数
递归函数:函数自己调用自己
结构体struct
一种自定义变量类型,是数据和函数的集合
结构体中可以申明各种变量和方法,默认为私有的,需加public才能从外部访问
结构体中申明的变量不能初始化、不能申明自己的结构体
结构体内的构造函数:
没有返回值、函数名和结构体名相同、必须有参数、必须在构造函数内部对所有变量数据初始化(this.name = name)