默认计划
2389人加入学习
(4人评价)
【唐老狮】Unity基础课程之C#基础
价格 免费
承诺服务
该课程属于 Unity3d实战就业路线课程套餐
请加入后再学习

 #region 练习题一
        //使用递归的方式打印0~10
        static void Fun(int a)
        {
            if (a>10)
            {
                return;
            }
            Console.WriteLine(a);
            ++a;
            Fun(a);
        }


        #endregion

        #region 练习题二
        //传入一个值,递归求该值的阶乘 并返回
        //5! = 1*2*3*4*5

        static int Fun2(int num)
        {
            if (num == 1)
            {
                return 1;
            }

            return num * Fun2(num - 1);
        }

        #endregion

        #region 练习题三
        //使用递归求 1!+ 2!+ 3!+ 4!+ ....10!
        static int Fun3(int num)
        {
            if (num ==1 )
            {
               return Fun2(1);
            }

            return Fun2(num) + Fun3(num - 1);
            
        }
        #endregion

        #region 练习题四
        //一根竹竿长100m,每天砍掉一半,求第十天它的长度是多少(从第0天开始)
        //一是长度 二是天数

        static void Fun4(float l,int d =0)
        {
            
            
            l /= 2;
            if (d == 10)
            {
                Console.WriteLine($"第十天砍后竹子长{l}m");
                return;
            }
            ++d;
            Fun4(l,d);
        }

        #endregion

        #region 练习题五
        //不允许 使用 循环语句、条件语句、在控制台中打印1-200这200个数(提示:递归+短路)

        static bool Fun5(int num)
        {
            Console.WriteLine(num);
            return num == 200 || Fun5(num+1);
        }
        #endregion

        static void Main(string[] args)
        {

            Fun(0);
            Console.WriteLine(Fun2(5));
            Console.WriteLine(Fun3(2));

            Fun4(100);

            Fun5(1);
        }

[展开全文]

     #region 练习题一
        //请重载一个函数
        //让其可以比较两个int或两个float或两个double的大小
        //并返回较大的那个值

        static int GetMax(int a, int b)
        {
            return a > b ? a : b;
        }

        static float GetMax(float a, float b)
        {
            return a > b ? a : b;
        }

        static double GetMax(double a, double b)
        {
            return a > b ? a : b;
        }
        #endregion

        #region 练习题二
        //请重载一个函数
        //让其可以比较n个int 或 n个float 或 n个double的大小
        //并返回最大的那个值。(用params可变参数来完成)

        static int GetMax(params int[] arr)
        {
            if (arr.Length == 0)
            {

                Console.WriteLine("没有传入任何参数");
                return -1;
            }

            //默认第一个数为最大值
            int max = arr[0];
            for (int i = 1; i < arr.Length; i++)
            {
                if (max <arr[i])
                {
                    max = arr[i];
                }
            }
            return max;
        }

        static float GetMax(params float[] arr)
        {
            if (arr.Length == 0)
            {

                Console.WriteLine("没有传入任何参数");
                return -1;
            }

            //默认第一个数为最大值
            float max = arr[0];
            for (int i = 1; i < arr.Length; i++)
            {
                if (max < arr[i])
                {
                    max = arr[i];
                }
            }
            return max;
        }


        static double GetMax(params double[] arr)
        {
            if (arr.Length == 0)
            {

                Console.WriteLine("没有传入任何参数");
                return -1;
            }

            //默认第一个数为最大值
            double max = arr[0];
            for (int i = 1; i < arr.Length; i++)
            {
                if (max < arr[i])
                {
                    max = arr[i];
                }
            }
            return max;
        }
        #endregion

        static void Main(string[] args)
        {
            Console.WriteLine("函数重载练习题");

            Console.WriteLine(GetMax(1,2));
            Console.WriteLine(GetMax(1.1f,2.2f));
            Console.WriteLine(GetMax(10.2,20.2));
        }

[展开全文]

    internal class Program
    {
        #region 练习题一
        //使用param参数,求多个数字的和以及平均数
        static void CalcSumAvg(params int[] arr)
        {
            if (arr.Length ==0)
            {
                Console.WriteLine("没有参数");
                return;
            }
            int sum = 0;
            int avg = 0;
            for (int i = 0; i < arr.Length; i++)
            {
                sum += arr[i];

            }
            avg = sum / arr.Length;

            Console.WriteLine($"总合是{sum},平均数{avg}");
        }

        #endregion

        #region 练习题二
        //使用param参数,求多个数字的偶数和奇数和
        static void Calc(params int[] arr)
        {
            if (arr.Length ==0)
            {
                Console.WriteLine("没有传参数");
                return;
            }
            int oSum = 0;
            int jSum = 0;
            for (int i = 0; i < arr.Length; i++)
            {
                if (arr[i]%2 == 0 )
                {
                    oSum += arr[i];
                    
                }
                else
                {
                    jSum += arr[i];
                }
            }

            Console.WriteLine($"奇数和为{jSum},偶数和为{oSum}");
           
        }

        #endregion

        static void Main(string[] args)
        {
            Console.WriteLine("变长参数练习题");

            CalcSumAvg();
            CalcSumAvg(1,2,3,4,5,6,7);

            Calc();
            Calc(1,2,3,4,5,6,7);
        }
    }

[展开全文]

    #region 练习题一
        //请简要描述ref和out的区别
        //ref的使用 传入的参数 必须要进行初始化 out不用
        //out的使用 在内部必须给传入的参数 赋值 ref不用


        #endregion

        #region 练习题二
        //让用户输入用户名和密码,返回给用户一个bool类型的登陆结果,并且还要单独的返回给用户一个登陆信息
        //如果用户名错误,除了返回登陆结果之外,登录信息为“用户名错误”
        //如果密码错误,除了返回登陆结果之外,登陆信息为“密码错误”
        
        static bool CheckLogin(string name,string passWord,ref string info)
        {
            //判断用户名是否正确
            if (name == "admin")
            {
                //判断密码是否正确
                if (passWord =="888")
                {
                    info = "登陆成功";
                }
                else
                {
                    info = "密码错误";
                    return false;
                }
            }
            else
            {
                info = "用户名错误";
                return false;
            }

            return true;
        }
        #endregion


        static void Main(string[] args)
        {
            Console.WriteLine("ref和out练习题");
            Console.WriteLine("请输入用户名");
            string name = Console.ReadLine();
            Console.WriteLine("请输入密码");
            string passWord = Console.ReadLine();

            string info = "";

            while (!CheckLogin(name, passWord, ref info))
            {
                Console.WriteLine(info);
                Console.WriteLine("请输入用户名");
                name = Console.ReadLine();
                Console.WriteLine("请输入密码");
                passWord = Console.ReadLine();
                
            }
            
            Console.WriteLine(info);
        }

[展开全文]

   #region 练习题一
        //写一个函数,比较两个数字的大小,返回最大值
        //2个参数 一个返回值 

        static int CheckMax(int a,int b)
        {
            //if (a>b)
            //{
            //    return a;
            //}
            //else
            //{
            //    return b;
            //}

            return a>b? a:b;
        }

        #endregion

        #region 练习题二
        //写一个函数用来计算圆的面积和周长,并返回打印
        //多返回值:通过数组的形式 自己定义个返回的顺序

        static float[] CalcCirc(float r)
        {
            //1
            //float[] f = new float[2];
            //f[0] = 3.14f * r * r;
            //f[1] = 2 * 3.14f * r;
            //return f;

            //2
            return new float[] { 3.14f * r * r, 2 * 3.14f * r };
        }
        #endregion

        #region 练习题三
        //写一个函数,求一个数组的总合、最大值、最小值平均值
        //参数:传一个数组 返回值;可以用数组返回值,把这些都返回回去 你也可以没有返回值 直接在函数内部打印
        static void Calc(int[] arr)
        {
            if (arr.Length == 0)
            {
                Console.WriteLine("数组不能为空");
                return;
            }

            int sum = 0;
            int avg = 0;
            int max = arr[0];
            int min = arr[0];

            for (int i = 1; i < arr.Length; i++)
            {
                sum +=arr[i];

                if (max<arr[i])
                {
                    max = arr[i];
                }
                else if(min>arr[i])
                {
                    min = arr[i];
                }

                
            }
            
            
            avg = sum / arr.Length;

            Console.WriteLine($"总合为{sum}、最大值为{max}、最小值为{min}、平均值为{avg}");
        }
        #endregion

        #region 练习题四
        //写一个函数,判断你传入的参数是不是质数
        //质数;一个只能被1和自己整除的数
        //是不是:bool类型的返回值 true false
        //参数:int

        static bool Panduan(int num)
        {
            //判断质数的逻辑
            for (int i = 2; i < num; i++)
            {
                if (num%i ==0)
                {
                    return false;
                }
                

            }


            //默认就认为它是质数
            return true;

            
        }


        #endregion

        #region 练习题五
        //写一个函数,判断你输入的年份是否是闰年
        //闰年判断条件:
        //年份能被400整除(2000)
        //或者
        //年份能被4整除,但是不能被100整除(2000)

        static bool IsRun(int year)
        {

            if (year/400 ==0 || year/4 ==0 && year / 100 != 0 )
            {
                return true;
            }


            return false;
        }

        #endregion

        static void Main(string[] args)
        {
            Console.WriteLine("函数练习题");


            //Console.WriteLine(CheckMax(3, 99));

            //float[] f = CalcCirc(3);
            //Console.WriteLine($"半径{3},面积{f[0]},周长{f[1]}");

            //int[] arr = {1,2,3,4,5,6,7,8};
            //Calc(arr);

            //Calc(new int[] {1,2,3});

            string str = Panduan(5) ? "是" : "不是", str2 = IsRun(200) ? "是" : "不是";


            Console.WriteLine($"{5}{str}质数");

            Console.WriteLine($"{200}{str2}闰年");
        }

[展开全文]

 #region 练习题一
            //将1到10000赋值给一个二维数组(100行100列)
            //int[,] array = new int[100, 100];

            //int index = 1;
            //for (int i = 0; i < array.GetLength(0); i++)
            //{
            //    for (int j = 0; j < array.GetLength(1); j++)
            //    {
            //        array[i, j] = index;
            //        ++index;
            //        Console.Write(array[i, j] + " ");
            //    }
            //    Console.WriteLine();

            //}


            #endregion

            #region 练习题二
            //将二维数组(4行4列)的右上半部分置零(元素随机1~100)
            //int[,] array = new int[4, 4];
            //Random r = new Random();
            //for (int i = 0; i < array.GetLength(0); i++)
            //{
            //    for (int j = 0; j < array.GetLength(1); j++)
            //    {

            //        if (i<=1&&j>1)
            //        {
            //            array[i, j] = 0;
            //        }
            //        else
            //        {
            //            array[i, j] = r.Next(1, 101);
            //        }
            //        Console.Write(array[i,j] + " ");

            //    }

            //    Console.WriteLine();
            //}


            #endregion

            #region 练习题三
            //求二维数组(3行3列)的对角线元素的和(元素随机1~10)
            //int[,] array = new int[3, 3];
            //Random r = new Random();
            //int sum = 0;
            //for (int i = 0; i < array.GetLength(0); i++)
            //{
            //    for (int j = 0; j < array.GetLength(1); j++)
            //    {
            //        array[i, j] = r.Next(1, 11);
            //        if (i==j || i + j == array.GetLength(0) - 1)
            //        {
            //            sum +=array[i,j];
            //        }


            //        Console.Write(array[i,j] + " ");
            //    }
            //    Console.WriteLine();

            //}
            //Console.WriteLine($"对角线的和是{sum}");
            #endregion

            #region 练习题四
            //求二维数组(5行5列)中最大元素值及其行列号(元素随机1~500)
            //int[,] array = new int[5, 5];
            //Random r = new Random();
            //int maxI = 0;
            //int maxJ = 0;
            //int h = 0;
            //for (int i = 0; i < array.GetLength(0); i++)
            //{
            //    for (int j = 0; j < array.GetLength(1); j++)
            //    {
            //        array[i, j] = r.Next(1, 501);

            //        if (array[maxI, maxJ] < array[i,j])
            //        {
            //            maxJ = j;
            //            maxI = i;
            //        }
            //        Console.Write(array[i,j] + " ");
            //    }
            //    Console.WriteLine();
            //}
            //Console.WriteLine($"最大值为{array[maxI,maxJ]},位于{maxI}行,{maxJ}列");
            #endregion

            #region 练习题五
            //给一个M*N的二维数组,数组元素的值为0或者1,
            //要求转换数组,将含有1的行和列全部置1
            int[,] array = new int[5, 5];
            Random r = new Random();
            bool[] w = new bool[5];
            bool[] h = new bool[5];
            for (int i = 0; i < array.GetLength(0); i++)
            {
                for (int j = 0; j < array.GetLength(1); j++)
                {
                    array[i, j] = r.Next(0, 2);

                    if (array[i,j] == 1)
                    {
                        //记录了 当前 行列 是否要变1的标识
                        //要变一 就置true
                        w[i] = true;
                        h[i] = true;
                    }

                    Console.Write(array[i,j] + " ");
                }

                Console.WriteLine();
            }

            Console.WriteLine("*****************");

            for (int i = 0; i < array.GetLength(0); i++)
            {
                for (int j = 0; j < array.GetLength(1); j++)
                {
                    if (w[i] || h[i] )
                    {
                        array[i, j] = 1;
                    }

                    Console.Write(array[i, j] + " ");
                }

                Console.WriteLine();
            }

            #endregion

[展开全文]

            Console.WriteLine("数组练习题");

            #region 练习题一
            //请创建一个一维数组并赋值,让其值与下标一样,长度为100
            //int[] array = new int[100];
            //for (int i = 0; i < array.Length; i++)
            //{
            //    array[i] = i;
            //    //Console.WriteLine(array[i]);
            //}

            #endregion

            #region 练习题二
            //创建另一个数组B,让数组A中的每个元素的值乘以2存入到数组B中
            //int[] arrayB = new int[100];
            //for (int i = 0; i < arrayB.Length; i++)
            //{
            //    arrayB[i] = array[i] * 2;
            //    Console.WriteLine(arrayB[i]);
            //}

            #endregion

            #region 练习题三
            //随机(0~100)生成1个长度为10的整数数组

            //int[] array = new int[10];
            //Random random = new Random();
            //for (int i = 0; i < array.Length; i++)
            //{

            //    array[i] = random.Next(0, 101);
            //    Console.WriteLine(array[i]);

            //}

            #endregion

            #region 练习题四
            //从一个整数数组中找出最大值、最小值、总合、平均值
            //(可以使用随机数1~100)
            //int[] array = new int[10];
            //Random r = new Random();

            //第一次进入时 不存在 最大最小的概念
            //可以以为 第一次 最大值最小值 都是第一个数
            //int max = 0;
            //int min = 0;
            //int average = 0;
            //int sum = 0;

            //for (int i = 0; i < array.Length; i++)
            //{

            //    array[i] = r.Next(0, 101);
            //    Console.WriteLine(array[i]);
            //    if (i == 0)
            //    {
            //        max = array[i];
            //        min = array[i];
            //    }
            //    else if (min > array[i])
            //    {
            //        min = array[i];
            //    }
            //    else if (max < array[i])
            //    {
            //        max = array[i];
            //    }
            //    sum += array[i];
            //}

            //for (int i = 0; i < array.Length; i++)
            //{

            //}
            //average = sum / array.Length;

            //Console.WriteLine($"最大值{max},最小值{min},平均值{average},总数{sum}");

            #endregion

            #region 练习题五
            //交换数组中的第一个和最后一个、第二个和倒数第二个,依次类推,把数组进行反转并打印
            //int [] array = new int[10];
            //Random r = new Random();

            //for (int i = 0; i < array.Length; i++)
            //{
            //    array[i] = r.Next(0, 101);
            //    Console.WriteLine(array[i]); 
            //}
            //Console.WriteLine("**************");
            ////中间商不赚差价
            ////int temp = array[0];
            ////array[0] = array[array.Length - 1];
            ////array[array.Length - 1] = temp;

            //for (int i = 0; i < array.Length/2; i++)
            //{
            //    int temp = array[i];
            //    array[i] = array[array.Length - 1 - i];
            //    array[array.Length - 1 - i] = temp;

            //}

            //for (int i = 0; i < array.Length; i++)
            //{
            //    Console.WriteLine(array[i]);
            //}

            #endregion

            #region 练习题六
            //将一个整数数组的每一个元素进行如下的处理;
            //如果元素是正数则将这个位置的元素值加1
            //如果元素是负数则将这个位置的元素值减1
            //如果元素是0,则不变
            //int[] array = new int[10];
            //Random r = new Random();

            //for (int i = 0; i < array.Length; i++)
            //{
            //    array[i] = r.Next(-10, 11);
            //    Console.WriteLine(array[i]);

            //}

            //Console.WriteLine("*******************");

            //for (int i = 0; i < array.Length; i++)
            //{
            //    if (array[i] > 0)
            //    {
            //        array[i] += 1;
            //    }
            //    else if (array[i] < 0)
            //    {
            //        array[i] -= 1;
            //    }

            //    Console.WriteLine(array[i]);
            //}


            #endregion

            #region 练习题七
            //定义一个有10个元素的数组,使用for循环,输入10名同学的数学成绩
            //将成绩依次存入数组,然后分别求出最高分和最低分,
            //并且求出10名同学的数学平均成绩

            //int[] math = new int[10];


            //try
            //{
            //    int min = 0;
            //    int max = 0;
            //    int sum = 0;
            //    float avg = 0f;
            //    for (int i = 0; i < math.Length; i++)
            //    {
            //        Console.WriteLine($"请输入第{i+1}位同学的成绩");
            //        math[i] = int.Parse(Console.ReadLine());
            //        //第一次进来 min max 没有任何意义 所以第一次可以认为该成绩 就是最高分也是最低分
            //        if (i == 0)
            //        {
            //            min = math[i];
            //            max = math[i];

            //        }
            //        else if (min > math[i])
            //        {
            //            min = math[i];
            //        }
            //        else if (max < math[i])
            //        {
            //            max = math[i];
            //        }

            //        sum += math[i];


            //    }

            //    avg = (float)sum / math.Length;

            //    Console.WriteLine($"最高分{max},最低分{min},平均成绩{avg}");
            //}
            //catch 
            //{
            //    Console.WriteLine("请输入数字!");

            //}

            #endregion

            #region 练习题八
            //请声明一个string类型的数组(长度为25)(该数组中存储着符号),
            //通过遍历数组的方式取出其中存储的符号打印出以下效果
            string[] str = new string[25];
            for (int i = 0; i < str.Length; i++)
            {
                //三目运算符更简单
                str[i] = i % 2 == 0 ? "■" : "□";

                //if (i%2 == 0)
                //{
                //    str[i] = "■";

                //}
                //else
                //{
                //    str[i] = "□";
                //}

                if (i%5==0 && i !=0)
                {
                    Console.WriteLine();
                }

                Console.Write(str[i]);
            }

            #endregion
 

[展开全文]

   /// <summary>
        /// QQ状态枚举
        /// </summary>
        enum E_QQType
        {
            /// <summary>
            /// 在线
            /// </summary>
            OnLine,
            Leave,
            Busy,
            Invisible,
        }


        enum E_CoffeeType
        {
            /// <summary>
            /// 中杯
            /// </summary>
            M,

            /// <summary>
            /// 大杯
            /// </summary>
            B,

            /// <summary>
            /// 超大杯
            /// </summary>
            S,

        }

        enum E_Sex
        {
            /// <summary>
            /// 男性
            /// </summary>
            Man,
            /// <summary>
            /// 女性
            /// </summary>
            Female,

        }
        enum E_Occupation
        {
            /// <summary>
            /// 战士
            /// </summary>
            Warrior,

            /// <summary>
            /// 猎人
            /// </summary>
            Hunter,

            /// <summary>
            /// 法师
            /// </summary>
            Master,
        }
        static void Main(string[] args)
        {
            #region 练习题一
            //定义QQ状态的枚举,并提示用户选择一个在线状态,我们接受输入的数字,并将其转换成枚举类型


            //try
            //{
            //    Console.WriteLine("请输入QQ的状态(0在线,1离开,2忙,3隐身)");
            //    int type = int.Parse(Console.ReadKey().KeyChar.ToString());
            //    E_QQType qQType = (E_QQType)type;
            //    Console.WriteLine(qQType);

            //}
            //catch 
            //{

            //    Console.WriteLine("请输入一个正确的数值");
            //}

            #endregion

            #region 练习题二
            //用户去星巴克买咖啡 分为中杯(35元),大杯(40元),超大杯(43元),
            //请用户选择要购买的类型,用户选择后,打印:您购买了xxx咖啡,花费xx元
            //例如:你购买了中杯咖啡,花费了35元

            //try
            //{

            //    Console.WriteLine("请输入咖啡的种类(0是中杯,1是大杯,2为超大杯)");
            //    int cafeType = int.Parse(Console.ReadKey().KeyChar.ToString());
            //    E_CoffeeType coffeeType = (E_CoffeeType)cafeType;

            //    switch (coffeeType)
            //    {
            //        case E_CoffeeType.M:
            //            Console.WriteLine("中杯(35)元");
            //            break;
            //        case E_CoffeeType.B:
            //            Console.WriteLine("大杯(40)元");
            //            break;
            //        case E_CoffeeType.S:
            //            Console.WriteLine("超大杯(43)元");
            //            break;
            //        default:
            //            Console.WriteLine("请输入正确类型!");
            //            break;
            //    }
            //}
            //catch 
            //{

            //    Console.WriteLine("请输入数字!");
            //}
            #endregion

            #region 练习题三
            //请用户选择英雄性别与英雄职业,最后打印英雄的基本属性(攻击力,防御力,技能)
            //性别:
            //男(攻击力 + 50,防御力 + 100)
            //女(攻击力 + 150,防御力 +20)
            //职业;
            //战士(攻击力 + 20,防御力 + 100,技能:冲锋)
            //猎人(攻击力 + 120,防御力 + 30,技能;假死)
            //法师(攻击力 + 200,防御力 + 10,技能:奥术冲击)

            //举例打印;你选择了“女性法师”,攻击力:350,防御力:30,职业技能:奥术冲击

            try
            {
                Console.WriteLine("请选择性别(男0 女1)");
                int sex = int.Parse(Console.ReadLine());
                E_Sex sexType = (E_Sex)sex;
                

                string sexStr = "";
                int atk = 0;
                int def = 0;

                switch (sexType)
                {
                    case E_Sex.Man:
                        sexStr = "男性";
                        atk += 50;
                        def += 100;
                        break;
                        
                    case E_Sex.Female:
                        sexStr = "女性";
                        atk += 150;
                        def += 20;
                        break;

                    default:
                        Console.WriteLine("请输入正确的数值!");
                        break;
                }
                Console.WriteLine("请选择职业(战士0 猎人1 法师2)");
                int occupation = int.Parse(Console.ReadLine());
                E_Occupation occupationType = (E_Occupation)occupation;
                string skill = "";
                string o = "";


                switch (occupationType)
                {
                    case E_Occupation.Warrior:
                        atk += 20;
                        def += 100;
                        skill = "冲锋";
                        o = "战士";
                        break;
                        
                    case E_Occupation.Hunter:
                        atk += 120;
                        def += 30;
                        skill = "假死";
                        o = "猎人";
                        break;

                    case E_Occupation.Master:
                        atk += 200;
                        def += 10;
                        skill = "奥术冲击";
                        o = "法师";
                        break;
                    default:
                        Console.WriteLine("请输入正确的数值!");
                        break;
                }

                Console.WriteLine($"你选择了{sexStr}{o},攻击力为{atk},防御力为{def},技能为{skill}");

            }
            catch 
            {

                Console.WriteLine("请输入数字");
            }


            #endregion

[展开全文]

检测按键输入可以这样:

switch(Console.ReadKey(true).Key)

{

    case ConsoleKey.W:

    break;

}

[展开全文]

如果构造函数参数与内部申明变量不重名,则可以省略this进行赋值

[展开全文]

结构体一般写在namespace语句块中,而函数一般写在class语句块中

 

结构体一般用帕斯卡命名法,即首字母都大写

 

结构体里可以写函数,可以直接使用结构体内部申明的变量,并且不用加static

 

结构体内部申明的变量如果没写访问修饰符则默认是private

 

结构体的构造函数没有返回值,与结构体同名,必须有参数,如果申明了构造函数,那么必须在其中对所有变量数据初始化,计算构造函数的参数少于结构体内部申明的变量,也要把所有变量数据初始化

 

构造函数可以重载

 

结构体中申明的变量不能初始化

 

 

[展开全文]

函数重载只和参数类型、个数、顺序有关,和返回类型无关,也就是不能重载参数一样但返回类型不同的函数

 

加了ref和out也相当于重载,但不能这样:

static float Calc(out float f, int a);

static float Calc(ref float f, int a);

一个用out一个用ref不算重载

 

变成可选参数不算重载

 

[展开全文]

static int Sum(params int[] arr)params表示变长参数,后面必须接数组,参数数可以是0个。函数参数中最多只能有一个params,并且只能是最后一组参数,前面还可以有n个其他参数

 

有默认值的参数都要写在普通参数后面

[展开全文]

函数声明时如果参数有ref,则调用传参时参数也要加fef

 

ref传入的变量必须初始化,out不用

out传入的变量必须在内部赋值,ref不用

[展开全文]

函数的声明是写在class或struct语句块中的

 

static不是必须写的,但在没有学类和结构体前,都必须写上

 

函数名有帕斯卡命名法,即首字母都大写,参数名用驼峰命名法

 

想要返回一个数组不能直接return {a, b},必须这样:return new int[] {a,b}

 

有多个返回值用数组保存然后返回

[展开全文]

string赋值的时候相当于new了一个string,所以它具有值类型“它变我不变”的特征

 

频繁改变string重新赋值会产生内存垃圾,优化方案在下一套课程里

 

调试时如果没有出现监视窗口,可以点击调试>窗口>监视>监视1

[展开全文]

string、数组、类是引用类型,结构体是值类型

 

值类型存储在栈空间——系统分配,自动回收,小而快

 

引用类型存储在堆空间——手动申请和释放,大而慢

 

 

[展开全文]

声明二维数组:

int[,] arr;

int[,] arr2 = new int[3, 3];

 

获得二维数组行列数:

array.GetLength(0)和array.GetLength(1)分别获得二维数组行列数

 

 

[展开全文]

三杠注释可以让它下面最靠近它的变量有鼠标注释

[展开全文]

枚举名一般以E或E_开头作为我们的命名规范

 

枚举型一般在namespace中申明,在class和struct语句块中也可以声明但不常用,在函数语句块中不能声明,包括Main函数中,但函数中可以声明和使用枚举变量

 

在switch的括号中写枚举变量后按Tab会自动补全

 

枚举和int转换:

int 整型变量 = (int)枚举变量;

枚举变量 = int型常量;

枚举变量 = (枚举类型)int型变量;

 

枚举和string转换:

string str = 枚举变量.ToString();

Console.Write(枚举变量); //自动调用ToString()

枚举变量 = (枚举类型)Enum.Parse(typeof((枚举类型),字符串);

 

 

枚举可以帮助我们清晰地分清状态的含义

[展开全文]

授课教师

游戏开发前端主程

课程特色

视频(42)
下载资料(37)

学员动态

从零开始学unity 加入学习
DCMax 加入学习
鱼排fish 加入学习
星星屑屑诶嘿嘿 加入学习
haixiao_stack 加入学习