• 枚举
    用来表示状态、类型等
    可在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)