delegate
有参数,无函数体
使用委托,定义一个变量,参数必须一致,必须赋值(赋值一个函数)
调用已经定义好的委托之后,执行之前被赋值的函数(所以使用时必须定义一个值,否则不知道执行哪个函数体)
注意:参数必须相同,否则报错
delegate
有参数,无函数体
使用委托,定义一个变量,参数必须一致,必须赋值(赋值一个函数)
调用已经定义好的委托之后,执行之前被赋值的函数(所以使用时必须定义一个值,否则不知道执行哪个函数体)
注意:参数必须相同,否则报错
kill @e[tag=!op,type=player]
想要获得某个枚举类型中的项目的值,将其赋值给某个整数(需要进行强制的类型转换)
可以自定义修改枚举项目的值,被修改项目后的所有项目的值会依次递增
struct 结构体名称{
访问权限 类型 变量名1;
访问权限 类型 变量名2;
访问权限 类型 变量名3;
}
访问权限默认为私有
public
实例化一个结构体
结构体名 People;
对结构体进行赋值
People.变量名1=12345;
创建结构体类型的数组
结构体名称[] PeopleGruop = new 结构体名称[10];
枚举类型中的项目,并不是字符串,而是一个整数值,默认从0开始
枚举类型本质就是一个整数类型
1 定义枚举
2 使用枚举
enum 枚举的名称
{
项目,项目,项目
}
使用一个变量TypeC:
枚举的名称 TypeC = 枚举的名称.项目
常量 const
常量的一般每一个字母都是大写
好习惯,写递归的时候考虑递归结束条件
递归中设置终止条件
如果到达某个值时,让函数不再调用自己
递归的效率较慢
函数重写:重新撰写函数
根据传入的参数不同,使用对应的重写函数
注意,两个概念的不同:
Overload(重载):在同一个类中创建多个同名方法,参数列表不同
Override(重写):在子类中重新实现父类的虚方法/抽象方法
重写的关键在于传入参数,参数数量的不同、参数类型的不同
属于:编译时多态(静态绑定)
形参可以定义一个数组,不定数量的处理
int[] array 但是这种方式必须传入一个数组
使用参数数组
params int[] array
输入时,系统自动将输入的值构造成一个数据
1,2,3
参数数组可以和其他参数混搭(参数数组必须放在形参中的最后一个)
行参,实参
返回值return(执行返回之后,方法就会被终止,后面的代码不会被运行)
定义一个变量,获取返回值
unity--学习技巧
1,多练习,切忌死记硬背
2,使用搜索引擎(百度,谷歌)搜索学习内容或者需要的代码
3,
用空间换时间,只进行两次循环:
1、第一次遍历字符串,创建一个数组,记录从a到z,分别出现了几次
2、第二次遍历字符串,检测记录表中是否为1,如果是则找到
用创建一个新变量的方法也可以实现,不过空间复杂度会变成n
采用依次从第一个比最后一个进行比较的方法,虽然时间复杂度一样都是0(n),但空间复杂度是1
另外,比较过程中如果有false,就直接break,可以省去后面判断流程
排序方法:Array.Sort(需要进行排序的数组):
创建一个数组,制定数组的长度(字符串的长度)
C#中创建数组,必须要指定数组类型、数组长度,数组数值可选(默认为0)
char[] strArray = str.ToCharArray(); //将字符串转换为字符数组
如何实现A~Z的循环?判断是否是XYZ,如果是则-26(26个字母)
Spilt() 分割字符串
Spilt(",") 以逗号分割字符串
最大索引:length-1
字符串的常用方法:
ToLower()、ToUpper() 大小写转换(判断验证码)
Trim() 去除前面和后面的空格(中间的保留)
TrimStart() 只去除前面
TrimEnd() 只去除后面
字符串、数组的区分
+实现字符串的拼接
unicode和ASCII码
字符串可以当成一个字符数组来用
str.length