【Unityc#专题篇】之c#进阶篇

2024-02-26 1710阅读

温馨提示:这篇文章已超过427天没有更新,请注意相关的内容是否还可用!

【Unityc#专题篇】之c#进阶篇


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

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

👨‍💻 本文由 秩沅 原创

👨‍💻 收录于专栏:unity之c#专题篇

【Unityc#专题篇】之c#进阶篇


⭐🅰️Unity之c#专题篇——【进阶章】⭐

⭐🅰️系统路线点击跳转⭐


⭐[【Unityc#专题篇】之c#进阶篇】

⭐【Unityc#专题篇】之c#核心篇】

⭐【Unityc#专题篇】之c#基础篇】

⭐【Unity-c#专题篇】之c#入门篇】

⭐【Unityc#专题篇】—进阶章题单实践练习

⭐【Unityc#专题篇】—基础章题单实践练习

⭐【Unityc#专题篇】—核心章题单实践练习


🎶前言


🅰️ 进阶之路


🎶(A) 数组的基类—Array类


集合 和 数组 的 区别 : 数组 的长度是固定的。 集合 的长度是可变的。 数组 中存储的是同一类型的元素,可以存储基本数据类型值。 集合 存储的都是对象。 而且对象的类型可以不一致。

  • 1.概念

    Array 类是 C# 中所有数组的基类,它是在 System 命名空间中定义。Array 类提供了各种用于数组的属性和方法,可看作扩充了功能的数组(但不等同数组),可以使用Array类的属性来对数组进行各种操作。

    • 2.方法

      【Unityc#专题篇】之c#进阶篇

    • 3.属性:

      【Unityc#专题篇】之c#进阶篇

    • 4.Array.Reverse()-需要反转字符串时

       String B ="12345";
       char [] A = B.TocharArray();
       Array.Reverse(A);
       String B = new string(A);
      

      🎶(B)简单数据集合——容器ArrayList


      • ArrayList,Array,LinkedList优缺点

      • 思维导图

        【Unityc#专题篇】之c#进阶篇

      • API

        初始化容量: ArrayList xx = new ArrayList(number);

        补充: arraryList 是可以通过下标来获取对象的

        【Unityc#专题篇】之c#进阶篇


        🎶(C)简单数据集合——容器Stack


        【Unityc#专题篇】之c#进阶篇


        🎶(D)简单数据集合——容器Queue类


        【Unityc#专题篇】之c#进阶篇

        • 所以什么时候用到栈和队列呢?

          首先在满足 先进后出或者 先进先出的存取规则之后

          也考虑到 只 存取 对象的 不需要修改和删除对象的操作

        • 这个时候栈和队列才适合

          🎶(E)简单数据集合——容器Hashtable类(散列表)


          【Unityc#专题篇】之c#进阶篇

          【Unityc#专题篇】之c#进阶篇


          🎶(F)简单数据集合小结


          • 都在相同的命名空间:using System.Collections;
          • 本质上都是Object的数组,存在拆箱装箱的缺点

            🎶(G)泛型


            【Unityc#专题篇】之c#进阶篇

            • 三大类

              【Unityc#专题篇】之c#进阶篇

              【Unityc#专题篇】之c#进阶篇

            • 好处:

              1.能够使得不同对象执行同一逻辑操作——(也是什么时候用泛型的前提)

              2.若是泛型方法,直接用泛型当作参数传递了,()里面就不用写了

              3.避免了装箱拆箱的操作


              🎶(H)泛型约束


              【Unityc#专题篇】之c#进阶篇

              泛型约束应用:

              • 单例模式的优缺点

                1优点: 只允许创建一个对象,因此节省内存,加快对象访问速度,因此对象适合需要被公用的场合使用,如多个模块使用同一个数据源连接对象等等

                2缺点: 就是不适用于变化的对象,如果同一类型的对象总是要在不同的用例场景发生变化,单例就会引起数据的错误,不能保存彼此的状态

                用单例模式,就是在适用其优点的状态下使用


                🎶(II)常用泛型数据结构类——List泛型类


                【Unityc#专题篇】之c#进阶篇

                【Unityc#专题篇】之c#进阶篇


                🎶(L)常用泛型数据结构类——Dictionary泛型类


                【Unityc#专题篇】之c#进阶篇

                【Unityc#专题篇】之c#进阶篇

                • hashtable的遍历 和 Dictionary 遍历API的区别对比

                  +【Unityc#专题篇】之c#进阶篇


                  🎶(J)数据结构存储方式——顺序存储和链式存储


                  【Unityc#专题篇】之c#进阶篇

                  【Unityc#专题篇】之c#进阶篇


                  🎶(K)常用泛型数据结构类——LinkedList泛型类


                  【Unityc#专题篇】之c#进阶篇

                  【Unityc#专题篇】之c#进阶篇


                  🎶(L)常用泛型数据结构类——泛型栈和队列


                  • 本质API和Stack类Queue类一样,加上了泛型
                  • 并且前者再system.collection命名空间里
                  • 后者在system.collection,Generic里

                    🎶(M)常用数据容器的不同应用情况


                    总结数组,list,Dectionary,Stack,Queue,LinkedList等存储容器。我们怎么来使用

                    • 数组:简单的数据类型存储的时候,或者只需要查改数据的时候

                    • List:它是ArraryList的泛型升级,适合一切对象的存储,适合查改的情况下使用

                    • LinkeList:它是泛型双向链表,适合频繁增删的数据对象的情况下使用

                      【Unityc#专题篇】之c#进阶篇

                    • Dectionary:它是Hashtable的泛型升级,适合键值对象的存储

                      【Unityc#专题篇】之c#进阶篇

                    • Stack:适合先进后出的情况下使用

                    • Queue:适合先进先出的情况下使用

                      【Unityc#专题篇】之c#进阶篇


                      🎶(N)委托和事件——委托


                      【Unityc#专题篇】之c#进阶篇

                      【Unityc#专题篇】之c#进阶篇

                      • 相当于老板把活儿都安排好了,分给谁做,谁做多个,谁做少的
                      • 某个对象要执行别人安排的一系列方法的时候可以选择用委托

                        🎶(O)委托和事件——事件


                        【Unityc#专题篇】之c#进阶篇


                        •  public Action  WarmDoEvent1;    //无返回值无参
                           public Action WarmDoEvent2;  //无返回值有两个int的参数
                           public Func WarmDoEvent3;        //有int类型的返回值,无参
                           public Func WarmDoEvent4;   //有int类型的返回值,有一个string的参数
                           ------------------------------------------------------------------
                           +
                          

                          委托和事件的原则:

                          1.委托什么类型有参有无返回值,它传入的函数和它是一致的

                          2.了解系统自带四个委托类型的实质是什么

                          3.变成事件的委托,无法在自身对象外面被置空(赋值)或被调用,但是+= 和 -+ 可以

                          4.而没有变事件的委托就不安全了 ,它就可以在外面被调用,有置空的风险

                          5.所以事件存在,让委托更安全了

                          6.用委托的时候能用事件就更好


                          🎶(P)委托和事件——匿名函数


                          【Unityc#专题篇】之c#进阶篇

                          【Unityc#专题篇】之c#进阶篇

                          【Unityc#专题篇】之c#进阶篇

                          • 相当于delegate是函数名 ,()是放参数列表的 ,{代码逻辑} 是方法体

                            🎶(Q)委托和事件——Lambda表达式


                            ![

                            ](https://img-blog.csdnimg.cn/6f2d17f530854c7a85f0521529246276.png)

                            【Unityc#专题篇】之c#进阶篇

                            【Unityc#专题篇】之c#进阶篇

                            • 闭包的条件

                              【Unityc#专题篇】之c#进阶篇

                            • 闭包的特点

                              【Unityc#专题篇】之c#进阶篇

                            • 父类函数最终值情况的消灭

                              【Unityc#专题篇】之c#进阶篇


                              🎶(R)委托和事件——补充(返回委托数组)


                              • 因为我们使用委托添加有返回值的函数时,当调用委托后,它并不会获取到每一个有返回值函数的返回值,它只是执行所有存在委托中的函数
                              • 如果想要获取到每一个函数执行后的返回值

                                • 知识点:委托容器中存在方法 GetInvocationList() 可以返回一个委托数组

                                • 当有返回值的容器存储多个函数时,想要一一得到其返回值的情况

                                  class Program
                                      {
                                          //当有返回值的容器存储多个函数时,想要一一得到其返回值的情况
                                         static public Func  Print()
                                          {
                                              Func action = null;
                                              for (int i = 1; i 
                                                  int index = i;
                                                  action += () = {
                                                  Console.WriteLine("第{0}个函数",index);
                                                      return index*100 ;
                                                  };
                                              }
                                              return  action;           
                                          }
                                          static void Main(string[] args)
                                          {
                                              Func text = Print();
                                              text();
                                              // Print()();//一步到位的写法
                                              foreach (Func item in text.GetInvocationList() )
                                              {
                                                  Console.WriteLine(item());
                                              }
                                          }
                                      }
                                  

                                  🎶(S)委托和事件——List排序相关


                                  【Unityc#专题篇】之c#进阶篇


                                  🎶(T)协变和逆变


                                  【Unityc#专题篇】之c#进阶篇【Unityc#专题篇】之c#进阶篇


                                  🎶(U)多线程


                                  【Unityc#专题篇】之c#进阶篇

                                  【Unityc#专题篇】之c#进阶篇

                                  【Unityc#专题篇】之c#进阶篇


                                  🎶(V)预处理指令


                                  【Unityc#专题篇】之c#进阶篇

                                  【Unityc#专题篇】之c#进阶篇

                                  🎶(W)反射


                                  ——(前面用不到,只是用来理解unity)

                                  • 编译器的作用
                                  • 源语言程序员
                                  • 目标语言程序

                                    【Unityc#专题篇】之c#进阶篇

                                    【Unityc#专题篇】之c#进阶篇

                                    【Unityc#专题篇】之c#进阶篇


                                    • 一.Type类

                                      【Unityc#专题篇】之c#进阶篇

                                      【Unityc#专题篇】之c#进阶篇

                                      【Unityc#专题篇】之c#进阶篇

                                      【Unityc#专题篇】之c#进阶篇


                                      • 二.Assembly类

                                        【Unityc#专题篇】之c#进阶篇


                                        • 三.Activator类

                                          【Unityc#专题篇】之c#进阶篇


                                          🎶(X)特性


                                          【Unityc#专题篇】之c#进阶篇


                                          常见的特性如下:

                                          • 限制加持范围的特性

                                            【Unityc#专题篇】之c#进阶篇

                                          • 标记过时提示的特性

                                            【Unityc#专题篇】之c#进阶篇

                                          • 提示调用者信息的特性

                                            【Unityc#专题篇】之c#进阶篇

                                            • 预处理条件编译的特性

                                              【Unityc#专题篇】之c#进阶篇

                                            • 外部调用DLL包的特性

                                              【Unityc#专题篇】之c#进阶篇

                                            • 特性的本质:

                                            • 特性的语法

                                            • 特性的使用

                                              【Unityc#专题篇】之c#进阶篇


                                              🎶(Y)迭代器


                                              【Unityc#专题篇】之c#进阶篇


                                              🎶(Y)特殊语法总结


                                              【Unityc#专题篇】之c#进阶篇

                                              【Unityc#专题篇】之c#进阶篇

                                              【Unityc#专题篇】之c#进阶篇

                                              【Unityc#专题篇】之c#进阶篇


                                              ⭐相关文章⭐


                                              ⭐【Unityc#专题篇】之c#进阶篇】

                                              ⭐【Unityc#专题篇】之c#核心篇】

                                              ⭐【Unityc#专题篇】之c#基础篇】

                                              ⭐【Unity-c#专题篇】之c#入门篇】

                                              ⭐【Unityc#专题篇】—进阶章题单实践练习

                                              ⭐【Unityc#专题篇】—基础章题单实践练习

                                              ⭐【Unityc#专题篇】—核心章题单实践练习

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



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

VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]