> 文章列表 > 【Unityc#专题篇】之c#实践出真知(基础篇)

【Unityc#专题篇】之c#实践出真知(基础篇)

【Unityc#专题篇】之c#实践出真知(基础篇)

在这里插入图片描述


👨‍💻个人主页:@元宇宙-秩沅

👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅!

👨‍💻 本文由 秩沅 原创

👨‍💻 收录于专栏unityc#专题篇习题

【Unityc#专题篇】之c#实践出真知(基础篇)


习题总结专题篇


文章目录

    • 习题总结专题篇
    • 🎶前言
    • 🎶(A)枚举
    • 🎶(B)一维数组
    • 🎶(C)二维数组
    • 🎶(D)值,引用类型存储上的区别
    • 🎶(E)函数的使用
    • 🎶(F)ref和out
    • 🎶(G)params
    • 🎶(H)重载
    • 🎶(I)递归
    • 🎶(J)结构体
    • 🎶(K)冒泡和选择排序
    • ⭐相关文章⭐

🎶前言


🅰️ 题单来自:唐老狮


🎶(A)枚举


  • 实践经验

    1.三行注释的使用
    2.try catch的应用
    3.枚举和int ,string之间的转换
    4.枚举和switch之间的便捷操作

【Unityc#专题篇】之c#实践出真知(基础篇)

 class _枚举1{enum E_QQ{living,busy,leaving,disturb}static void Main(string[] args){Console.WriteLine("请选择在线的状态:(0)在线,(1)忙碌,(2)离开,(3)请勿打扰");try{int state = int.Parse(Console.ReadLine());E_QQ SState = (E_QQ)state;Console.WriteLine("现状态为: {0}", SState);}catch{Console.WriteLine("请输入数字:");}}}

【Unityc#专题篇】之c#实践出真知(基础篇)

 class Program{/// <summary>/// 咖啡选购枚举/// </summary>enum E_coofee{Middle = 35 ,Big = 40 ,Supper = 43,}static void Main(string[] args){try{Console.WriteLine("请选择您的咖啡种类输入对应的价格:中杯(35) 大杯(40) 超大杯(43)");int Index = int.Parse(Console.ReadLine());E_coofee state = (E_coofee)Index;switch (state){case E_coofee.Middle:{Console.WriteLine(state);break;}case E_coofee.Big:{Console.WriteLine(state);break;}case E_coofee.Supper:{Console.WriteLine(state);break;}default:break;}}catch{Console.WriteLine("请输入咖啡的价格");}}}

【Unityc#专题篇】之c#实践出真知(基础篇)
【Unityc#专题篇】之c#实践出真知(基础篇)

   enum E_Sex{男性,女性}/// <summary>/// 职业枚举/// </summary>enum E_Work{战士,猎人,法师}class Program{static void Main(string[] args){try{Console.WriteLine("请选择您的英雄性别: 男(0)/女(1)");int sex = int.Parse(Console.ReadLine());Console.WriteLine("请选择您的英雄职业: 战士(0)/猎人(1)/法师(2)");int collage = int.Parse(Console.ReadLine());E_Sex E_sex = (E_Sex)sex;E_Work E_work = (E_Work)collage;int damage = 0;int fanse = 0;string imagic = "";switch (E_sex){case E_Sex.男性:damage += 50;fanse += 100;break;case E_Sex.女性:damage += 150;fanse += 20;break;default:break;}switch (E_work){case E_Work.战士:damage += 20;fanse += 100;imagic = "冲锋";break;case E_Work.猎人:damage += 120;fanse += 30;imagic = "假死";break;case E_Work.法师:damage += 200;fanse += 10;imagic = "奥术冲击";break;default:break;}Console.WriteLine("你选择了{0}{1}\\n攻击为{2}\\n防御力为{3}\\n职业技能为{4}", E_sex, E_work, damage, fanse, imagic);}catch{Console.WriteLine("请输入对应的数字");}}}

【Unityc#专题篇】之c#实践出真知(基础篇)


🎶(B)一维数组


  • 实践经验

    1.简单的if else逻辑语句可以换成三目运算符
    2.foreach的灵活使用

【Unityc#专题篇】之c#实践出真知(基础篇)【Unityc#专题篇】之c#实践出真知(基础篇)

   static void Main(string[] args){int[] A = new int[100];int[] B = new int[100];int[] C = new int[10];Random rand = new Random();//6.随机生成10个数for(int i = 0; i<A.Length;i++){A[i] = 100;B[i] = 2 * A[i];if(i<C.Length ){C[i] = rand.Next(1,101);}}//7.数组中找出max,min,avge,allint max = C[0], min = C[0], avge = 0, all = 0;foreach (int i in C){Console.Write(" " + i);all += i;if (i > max) max = i;if (i < min) min = i;}avge = all / C.Length; Console.WriteLine("\\n最大值{0},最小值{1},总和{2},平均值{3}\\n",max,min,all,avge);//8.简单反转数组for( int i = 0; i<C.Length /2;i++){int temp;temp = C[i];C[i] = C[C.Length -1-i];C[C.Length - 1 - i] = temp;}foreach (int i in C){Console.Write(" " + i);}}//11.打印符号Console.WriteLine();string[] array = new string[25];    //简单的if 和else可以用三目运算符代替for(int i = 0; i< array .Length; i++){array[i] = i % 2 == 0 ? "*" : "&"; }int Temp = 0;foreach( string i in array){Temp++;Console.Write(" "+i);if (Temp % 5 == 0) Console.WriteLine();}

🎶(C)二维数组


  • 实践经验

    1.array.length 此时代表的是全部元素数量
    2.矩阵对角线规则 i == j的时候
    3.矩阵上半部规则 j >= i 的时候
  static void Main(string[] args){#region  第12题//const int Index = 100;//int[,] array = new int[Index, Index];//int x = 1;//Console.WriteLine("数组长度{0}", array.Length); //此时代表整个长度//for (int i = 0; i < Index; i++)//{//    for (int j = 0; j < Index; j++)//        array[i, j] = x++;//}//foreach (int i in array) Console.Write(" " + i);#endregion#region 第13题int[,] B = new int[4, 4];Random rand = new Random();for (int i = 0; i < 4; i++){for (int j = 0; j < 4; j++){//让右上半部分为0B[i, j] = j >= i ? 0 : rand.Next(1, 101);}}int temp = 1;foreach (int i in B){Console.Write(" " + i);if (temp++ % 4 == 0) Console.WriteLine();}#endregion#region 第14题int[,] C = new int[3, 3];int All = 0;Random Rand = new Random();for (int i = 0; i < 3; i++){for (int j = 0; j < 3; j++){C[i, j] = Rand.Next(1, 10);if (i == j) All += C[i, j];}}Console.WriteLine();int t = 1;foreach (int i in C){Console.Write(" " + i);if (t++ % 3 == 0) Console.WriteLine();}Console.WriteLine("对角线的和为{0}", All);#endregion#region 第15题int M,N;Random rrrand = new Random();try{Console.WriteLine("您想要要得到多少行多少列的矩阵呢");M = int.Parse(Console.ReadLine());N = int.Parse(Console.ReadLine());int[,] ros = new int[M, N];for (int i = 0; i < M; i++){for (int j = 0; j < N; j++){//将下标为1的行或者列全部为1ros[i, j] = i == 1 || j == 1 ? 1 : rrrand.Next(0, 2);}}Console.WriteLine();int q = 1;foreach (int i in ros){Console.Write(" " + i);if (q++ % N == 0) Console.WriteLine();}}catch{Console.WriteLine("请输入整形数字");}#endregion

【Unityc#专题篇】之c#实践出真知(基础篇)


🎶(D)值,引用类型存储上的区别


  • 实践经验

    1.F9断点调试和F10向下调式
    2.数组和string空间开辟和引用的关系

  • 值类型的实例化
    【Unityc#专题篇】之c#实践出真知(基础篇)

  • 引用类型的实例化
    【Unityc#专题篇】之c#实践出真知(基础篇)

【Unityc#专题篇】之c#实践出真知(基础篇)

  • 特殊引用类型的实例化
    【Unityc#专题篇】之c#实践出真知(基础篇)

🎶(E)函数的使用


  • 实践经验

    1三目运算符的便捷性-简化和可观化代码
    2.三行注释的运用
    【Unityc#专题篇】之c#实践出真知(基础篇)
/// <summary    >/// 函数的运用/// </summary>class Program{const float Pi = 3.1415f;/// <summary>/// 返回最大值/// </summary>/// <param name="a"></param>/// <param name="b"></param>/// <returns></returns>public int MAX(int a , int b) {return a > b ? a : b;}/// <summary>///  计算圆面积和周长/// </summary>/// <param name="r"></param>public void Circrl( int r){Console.WriteLine("圆的面积为{0},周长为{1}", Pi * r * r, 2 * Pi * r);}/// <summary>/// 数组的基本操作/// </summary>/// <param name="a"></param>public void Array(int [] a){int max, min, all= 0;max = min = a[0];foreach(int i in a){max = i > max ? i : max;min = i < min ? i : min;all += i;}Console.WriteLine("数组的最大值为{0},最小值为{1},总和为{2},平均值为{3}", max, min, all, all / a.Length);}/// <summary>/// 判断质数/// </summary>/// <param name="x"></param>/// <returns></returns>public bool ZhiShu( int x ){for (int i = 2; i < x; i++){return i % 2 == 0 ? false : true;}return true;}/// <summary>/// 判断是否是闰年/// </summary>/// <param name="x"></param>/// <returns></returns>public bool RYear( int x ){return x % 400 == 0 || (x % 4 == 0 && x % 100 != 0) ? true : false;}static void Main(string[] args){Program text = new Program();text.MAX(5, 8);text.Circrl(2);text.Array(new int[] { 1, 2, 3, 4, 5 });text.ZhiShu(5);text.RYear(2023);}

🎶(F)ref和out


  • 实践经验

    1.ref和out的作用是什么——参数变成引用的你变我也变
    2.ref和out的区别是什么

ref传之前不用初始化,out需要
ref传之后要在函数中被赋值,out不用

  /// <summary>/// ref out的区别在于,ref修饰的传参不用经过初始化但是out需要/// </summary>class Loading{private string acount = "L24158";private string SSSecret ="qbz123";public bool Message(  string a , string b, ref string c){if(a!=acount){c = "用户名错误";return false;}if(b!= secret){c = "密码错误";return false;}return true;}static void Main(string[] args){Loading text = new Loading();Console.WriteLine("请输入用户名:");string A = Console.ReadLine();Console.WriteLine("请输入密码:");string B = Console.ReadLine();string C = "";text. Message( A, B,ref C);Console.WriteLine(C);}

🎶(G)params


  • 实践经验

    1.要考虑数组为空时的条件
    2.params的特点

【Unityc#专题篇】之c#实践出真知(基础篇)

      #region 28和29,param加长参数的考察public void Result(params int [] arrary){int all = 0, avage = 0 , dou = 0, sin = 0;//要考虑全面还需判断是否为空if(arrary == null) { Console.WriteLine("未有参数传递进去!"); }for (int i = 0; i < arrary.Length; i++){all +=arrary[i];}avage = all / arrary.Length;Console.WriteLine("总值为{0},平均值为{1}",all,avage);foreach (var item in arrary){if (item % 2 == 0) dou += item;else sin += item;}Console.WriteLine("偶数和为{0}。奇数和为{1}", dou, sin);}#endregion

🎶(H)重载


  • 实践经验

    1.掌握重载的特点
    不考虑返回值
    类型一致,数量,和参数类型不一致
    【Unityc#专题篇】之c#实践出真知(基础篇)
       #region 28和29,param加长参数的考察public void Result(params int [] arrary){int all = 0, avage = 0 , dou = 0, sin = 0;//要考虑全面还需判断是否为空if(arrary == null) { Console.WriteLine("未有参数传递进去!"); }for (int i = 0; i < arrary.Length; i++){all +=arrary[i];}avage = all / arrary.Length;Console.WriteLine("总值为{0},平均值为{1}",all,avage);foreach (var item in arrary){if (item % 2 == 0) dou += item;else sin += item;}Console.WriteLine("偶数和为{0}。奇数和为{1}", dou, sin);}#endregion/// <summary>/// 考察重载的特点/// </summary>public float Result( float A ,float B){return A > B ? A : B;}static void Main(string[] args){int a = 1, b = 2, c = 3, d = 4;Program text = new Program();text.Result(a, b, c, d);}}

🎶(I)递归


  • 实践经验

    1.退出条件
    2.递归条件
    3.有返回值就代表结束了,不用再添加判断语句

【Unityc#专题篇】之c#实践出真知(基础篇)

   #region 32~36递归题目public int all;/// <summary>/// 32/// </summary>/// <param name="i"></param>public void Digui(int i){if (i == 11) return; //结束条件Console.Write(i+" ");Digui(++i);           //递归条件}/// <summary>/// 33/// </summary>/// <param name="x"></param>public int CC(int w){if (w == 0) return 1;  //结束条件return  w* CC(w - 1);//递归条件}public int  Mulitiplay(int x){if(x == 1) return CC(1);   //结束条件return CC(x)+Mulitiplay(x-1); //递归条件}/// <summary>/// 35/// </summary>/// <param name="Alenth"></param>/// <param name="day"></param>/// <returns></returns>public float Length(float Alenth,int day){if(day == 10) return Alenth;   //结束条件return  Length(Alenth / 2, ++day); //递归条件}   /// <summary>/// 36/// </summary>/// <param name="M"></param>public void Print(int M){if (M > 200) return;//结束条件Console.Write(" " + M); Print(++M); //递归条件}static void Main(string[] args){Program text = new Program();text.Digui(0);Console.WriteLine("\\n"+text.Mulitiplay(5));Console.WriteLine("\\n" + text.all);Console.WriteLine(text.Length(100f,1));text.Print(1);Console.WriteLine("\\n"+text.CC(5));}#endregion

🎶(J)结构体


  • 实践经验

    1.结构体和类的区别(初始化,内存类型,自定义自身)
    2.什么时候用结构体什么时候用累(运行效率上看)
    【Unityc#专题篇】之c#实践出真知(基础篇)
   #region  37题struct Student{string name;string sex;int age;string sclass;string majoy;public  Student(string name ,string sex ,int age ,string  sclass ,string majoy){this.name = name;this.sex = sex;this.age = age;this.sclass = sclass;this.majoy = majoy;}public void Print(){Console.WriteLine("学生姓名为{0}\\n性别为{1}\\n年龄为{2}\\n班级为{3}\\n专业为{4}", name, sex, age, sclass, majoy);}}static void Main(string[] args){Student SS = new Student("张三","男",18,"一班","信息工程");Student MM = new Student("李四", "女", 19, "二班", "信息工程");SS.Print();}#endregion#region 41题//struct S_SmallBoss //{//    public string name ;//    public int damage;   //}//static void Main(string[] args)//{//    S_SmallBoss[] boss = new S_SmallBoss[10];//    for (int i = 0; i < boss.Length; i++)//    {//        boss[i].name = "小怪兽" + i;//        boss[i].damage = i * 10;//    }//    foreach (var item in boss)//    {//        Console.WriteLine("怪兽名字为:"+item.name+"攻击力为"+item.damage );//    }//}#endregion

🎶(K)冒泡和选择排序


  • 实践经验

    1.冒泡:每一轮都遍历出最大或最小的给A[i]
    2.选择:每一轮替换最大或最小的下标,不断和A[i]进行交换
    【Unityc#专题篇】之c#实践出真知(基础篇)
  /// <summary>/// 冒泡/// </summary>/// <param name="A"></param>static  public void MP( int[]A){if(A!=null){for (int i = 0; i < A.Length; i++){for (int j = i+1 ; j < A.Length; j++){int temp;if(A[i] > A[j]){temp = A[i];A[i] = A[j];A[j] = temp;}}}}foreach (var item in A){Console.Write(" "+ item );}}/// <summary>/// 简单排序/// </summary>/// <param name="A"></param>static   public  void JD(int[] A){if (A != null){for (int i = 0; i < A.Length; i++){int max = i;int temp ;for (int j = i+1; j < A.Length; j++){ if(A[j]>A[max]){max = j;temp = A[i];A[i] = A[max];A[j] = temp;}}}Console.WriteLine();foreach (var item in A){Console.Write(" " + item);}}

⭐相关文章⭐

⭐【2023unity游戏制作-mango的冒险】-4.场景二的镜头和法球特效跟随

⭐【2023unity游戏制作-mango的冒险】-3.基础动作和动画API实现

⭐【2023unity游戏制作-mango的冒险】-2.始画面API制作

⭐【2023unity游戏制作-mango的冒险】-1.场景搭建

⭐“狂飙”游戏制作—游戏分类图鉴(网易游学)

⭐本站最全-unity常用API大全(万字详解),不信你不收藏



你们的点赞👍 收藏⭐ 留言📝 关注✅是我持续创作,输出优质内容的最大动力!