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

在这里插入图片描述


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

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

👨‍💻 本文由 秩沅 原创

👨‍💻 专栏交流🧧
🟥Unity100个实战基础✨🎁
🟦 Unity100个精华一记✨🎁
🟩 Unity50个demo案例教程✨🎁
🟨 Unity100个精华细节BUG✨🎁

在这里插入图片描述

在这里插入图片描述

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

🅰️系统路线点击跳转


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

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

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

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

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

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

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


🎶前言


🅰️ 进阶之路


🎶(A 数组的基类—Array类


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

  • 1.概念

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

  • 2.方法
    在这里插入图片描述

  • 3.属性:
    在这里插入图片描述

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

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

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


初始化容量: ArrayList xx = new ArrayList(number);
补充: arraryList 是可以通过下标来获取对象的
在这里插入图片描述


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


在这里插入图片描述


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


在这里插入图片描述

  • 所以什么时候用到栈和队列呢?
    首先在满足 先进后出或者 先进先出的存取规则之后
    也考虑到 只 存取 对象的 不需要修改和删除对象的操作
  • 这个时候栈和队列才适合

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


在这里插入图片描述

在这里插入图片描述


🎶(F简单数据集合小结


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

🎶(G泛型


在这里插入图片描述

  • 三大类
    在这里插入图片描述
    在这里插入图片描述
  • 好处

    1.能够使得不同对象执行同一逻辑操作——(也是什么时候用泛型的前提)
    2.若是泛型方法,直接用泛型当作参数传递了,()里面就不用写了
    3.避免了装箱拆箱的操作

🎶(H泛型约束


在这里插入图片描述
泛型约束应用:

  • 单例模式的优缺点

    1优点: 只允许创建一个对象,因此节省内存,加快对象访问速度,因此对象适合需要被公用的场合使用,如多个模块使用同一个数据源连接对象等等
    2缺点: 就是不适用于变化的对象,如果同一类型的对象总是要在不同的用例场景发生变化,单例就会引起数据的错误,不能保存彼此的状态

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


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


在这里插入图片描述
在这里插入图片描述


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


在这里插入图片描述
在这里插入图片描述

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

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


在这里插入图片描述
在这里插入图片描述


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


在这里插入图片描述
在这里插入图片描述


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


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

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


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

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

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

  • LinkeList:它是泛型双向链表,适合频繁增删的数据对象的情况下使用
    在这里插入图片描述

  • Dectionary:它是Hashtable的泛型升级,适合键值对象的存储
    在这里插入图片描述

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

  • Queue:适合先进先出的情况下使用
    在这里插入图片描述


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


在这里插入图片描述

在这里插入图片描述

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

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


在这里插入图片描述


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

委托和事件的原则:
1.委托什么类型有参有无返回值,它传入的函数和它是一致的
2.了解系统自带四个委托类型的实质是什么
3.变成事件的委托,无法在自身对象外面被置空(赋值)或被调用,但是+= 和 -+ 可以
4.而没有变事件的委托就不安全了 ,它就可以在外面被调用,有置空的风险
5.所以事件存在,让委托更安全了
6.用委托的时候能用事件就更好


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


在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

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

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


![

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

在这里插入图片描述

在这里插入图片描述

  • 闭包的条件
    在这里插入图片描述
  • 闭包的特点
    在这里插入图片描述
  • 父类函数最终值情况的消灭
    在这里插入图片描述

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


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

如果想要获取到每一个函数执行后的返回值

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

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

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

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


在这里插入图片描述


🎶(T协变和逆变


在这里插入图片描述在这里插入图片描述


🎶(U多线程


在这里插入图片描述

在这里插入图片描述
在这里插入图片描述


🎶(V预处理指令


在这里插入图片描述

在这里插入图片描述

🎶(W反射


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

  • 编译器的作用
  • 源语言程序员
  • 目标语言程序
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 一.Type类
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 二.Assembly类

在这里插入图片描述


  • 三.Activator类
    在这里插入图片描述

🎶(X特性


在这里插入图片描述


常见的特性如下:

  • 限制加持范围的特性
    在这里插入图片描述
  • 标记过时提示的特性
    在这里插入图片描述
  • 提示调用者信息的特性

在这里插入图片描述

  • 预处理条件编译的特性
    在这里插入图片描述

  • 外部调用DLL包的特性
    在这里插入图片描述

  • 特性的本质:

  • 特性的语法

  • 特性的使用
    在这里插入图片描述


🎶(Y迭代器


在这里插入图片描述


🎶(Y特殊语法总结


在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


⭐相关文章⭐


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

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

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

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

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

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

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

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



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

  • 64
    点赞
  • 138
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 96
    评论
评论 96
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秩沅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值