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

news2024/12/25 0:55:04

在这里插入图片描述


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

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

👨‍💻 本文由 秩沅 原创

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

在这里插入图片描述


🅰️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,Array,LinkedList优缺点

  • 思维导图
    在这里插入图片描述

  • API

初始化容量: 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大全(万字详解),不信你不收藏



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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/673197.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C#进阶】C# 索引器

序号系列文章13【C#进阶】C# 特性14【C#进阶】C# 反射15【C#进阶】C# 属性 文章目录 前言1、索引器的概念2、索引器的定义3、索引器的基本使用4、索引器的重载5、接口中的索引器6、属性和索引器之间的比较7、索引器的适用场景结语 前言 &#x1f342; Hello大家好啊&#xff0c…

基于Java会员管理系统设计实现(源码+lw+部署文档+讲解等)

博主介绍&#xff1a; ✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌ &#x1f345; 文末获取源码联系 &#x1f345; &#x1f447;&#x1f3fb; 精…

从零开始 Spring Boot 46:@Lookup

从零开始 Spring Boot 46&#xff1a;Lookup 图源&#xff1a;简书 (jianshu.com) 在前文中&#xff0c;我介绍了 Spring Bean 的作用域&#xff08;Scope&#xff09;&#xff0c;且讨论了将一个短生命周期的 bean &#xff08;比如request作用域的 bean&#xff09;注入到长…

事务小总结

事务定义 是一个数据库操作序列&#xff0c;这些操作要么全部执行,要么全部不执行&#xff0c;是一个不可分割的工作&#xff08;程序执行&#xff09;单元。事务由事务开始与事务结束之间执行的全部数据库操作组成。 事务特性 原子性(Atomicity)一致性(Consistency)隔离性(…

Linux下 文件删除但是空间未被释放 或者 磁盘已满但找不到对应的大文件 的解决方案

Linux下文件删除但是空间未被释放的解决方案 前言1. 查看当前磁盘占用情况2. 模拟进程占用3. 执行rm -rf 命令删除文件4. 查看被删除但是未释放空间的文件5. 执行清空文件操作 前言 linux磁盘空间已满&#xff0c;手动rm -rf 删除了大文件之后&#xff0c;df -h 查看一下发现空…

操作系统第四章练习题

第一部分 教材习题&#xff08;P152&#xff09; 1、为什么要配置层次式存储器&#xff1f; 设置多个存储器能够使存储器两头的硬件能并行工作;采用多级存储系统,专门是Cache 技术,是减轻存储器带宽对系统性能影响的最佳结构方案;在微处置机内部设置各类缓冲存储器,减轻对存储…

【Android -- 面试】Android 面试题集锦(Java 基础)

Java 基础 1、Java 的类加载过程 jvm 将 .class 类文件信息加载到内存并解析成对应的 class 对象的过程&#xff0c; 注意&#xff1a;jvm 并不是一开始就把所有的类加载进内存中&#xff0c;只是在第一次遇到某个需要运行的类才会加载&#xff0c;并且只加载一次 主要分为三…

【ARMv8 SIMD和浮点指令编程】NEON 比较指令——比较的方方面面

比较指令是常见的一类指令,NEON 中当然也排除,下面涉及比较和测试位两类指令。 1 CMEQ (register) 按位比较相等(向量)。该指令将第一个源 SIMD&FP 寄存器中的每个向量元素与第二个源 SIMD&FP 寄存器中的相应向量元素进行比较,如果比较相等,则将目标 SIMD&…

基于Python+Django+mysql+html通讯录管理系统

基于PythonDjangomysqlhtml通讯录管理系统 一、系统介绍二、功能展示1.用户登陆2.用户注册3.密码修改4.查询5.添加6.修改7.删除 三、其它系统四、获取源码 一、系统介绍 该系统实现了 用户登陆、用户注册、密码修改、查询信息、添加信息&#xff0c;修改信息、删除信息 运行环…

vue2脚手架可视化小项目

vue2脚手架小项目 这个项目又数据可视化可以通过点击按钮修改数据&#xff0c;同时图形的内容也会随着变化这里面也又保存功能&#xff0c;搜索功能&#xff0c;添加功能用到的框架有vue2脚手架&#xff0c;语言有bootstrap&#xff0c;css&#xff0c;也用了echarts 下面会先…

从Web2.0走向Web3.0还有多远?

Web2.0时代给互联网带来了巨大的变革&#xff0c;让用户成为内容的创造者和共享者。然而&#xff0c;随着技术的不断发展和创新&#xff0c;我们正在逐渐迈向Web3.0时代&#xff0c;这将是一个更加去中心化、透明和安全的数字世界。那么&#xff0c;从Web2.0走向Web3.0还有多远…

202322读书笔记|《给你一个大抱抱:治愈系暖心绘本》——如果事与愿违,请相信一切自由安排

&#xff3b;TOC&#xff3d;(202322读书笔记&#xff5c;《给你一个大抱抱&#xff1a;治愈系暖心绘本》——如果事与愿违&#xff0c;请相信一切自由安排 作者白开水DAWAN&#xff0c;治愈系小说&#xff0c;画面明媚有趣轻松&#x1f92a;&#x1f92a;&#x1f618;&#…

learn C++ NO.10——string(3)

引言&#xff1a; 现在是北京时间2023年6月22日的早上8点。又是一年端午&#xff0c;时光如梭。这一年来发生的变化太多了&#xff0c;遥想去年此时&#xff0c;我还沉浸在被大学录取的喜悦中&#xff0c;转眼间大一就过去了。这里我也衷心的祝愿您和您的家人端午安康&#xf…

Triton教程 --- 自定义操作

Triton教程 — 自定义操作 Triton系列教程: 快速开始利用Triton部署你自己的模型Triton架构模型仓库存储代理模型设置优化动态批处理速率限制器模型管理 自定义操作 Triton 推理服务器部分支持允许自定义操作的建模框架。 自定义操作可以在构建时或启动时添加到 Triton&…

前端3D Three.js 在本地搭建一个官方网站

上文Web前端 3D开发入门规划 3D效果将不再是桌面应用的专利我们说了说 WEB 3D的一个发展和学习方向 那么 我们还是先搞定文档使用的问题 我们可以访问http://www.yanhuangxueyuan.com/Three.js/这里面可以查到使用方法 但不是最新的 而是别人用官方文档改的 真正的官方文档地址…

30 linux 新建进程的进程号是如何分配的?

前言 呵呵 进程号是我们经常使用到的, 但是 却从来 没有深究过的东西 这里 就来看一下 具体的进程号的生成方式 linux 新建进程是以 fork exec 的形式创建进程的 子进程 是 复制自 父进程 pid 是怎么生成的? 分配 pid 的地方调用堆栈如下, fork 之后, 会为 新进程 申…

全志V3S嵌入式驱动开发(基于usb otg的spi-nand镜像烧入)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 前面我们说过spi nand驱动&#xff0c;但是这个驱动是建立在linux系统从sd卡加载的情况下进行的。开发测试的情况下&#xff0c;这么做或许是可以的…

PWM详解(嵌入式学习)

这里写目录标题 前言定义参数工作原理应用练习 前言 在STM32微控制器中&#xff0c;PWM代表脉冲宽度调制&#xff08;Pulse Width Modulation&#xff09;。PWM是一种用于控制电子设备的技术&#xff0c;通过调整信号的脉冲宽度和周期&#xff0c;可以模拟出不同的电压或功率级…

【python】—— 基础语法(一)

序言&#xff1a; 在之前&#xff0c;我们已经对【python】的开发环境进行了相应的安装&#xff0c;紧接着本期我就讲给大家介绍它的相关语法。对于学过【C/C】或者其他语言的小伙伴来说&#xff0c;语法内容学习起来就会掌握的很快了。 目录 前言 &#xff08;一&#xff0…

【架构师】零基础到精通——网关策略

博客昵称&#xff1a;架构师Cool 最喜欢的座右铭&#xff1a;一以贯之的努力&#xff0c;不得懈怠的人生。 作者简介&#xff1a;一名退役Coder&#xff0c;软件设计师/鸿蒙高级工程师认证&#xff0c;在备战高级架构师/系统分析师&#xff0c;欢迎关注小弟&#xff01; 博主小…