C#四部曲(知识补充)

Unity跨平台原理

.Net相关

只要编写的时候遵循.NET的这些规则,就能在.NET平台下通用

各种源码→根据.NET规范编写→(虚拟机)生成CIL中间码(保存在程序集中)→转成操作系统原代码

跨语言←   跨平台↓

Unity跨平台原理(Mono)

c#脚本→MonoC#编译器→IL中间代码→monoRunTIme虚拟机→操作系统原生代码

Unity跨平台原理(IL2CPP)

跨平台总结

各种源码→根据.NET规范编写→(虚拟机)生成CIL中间码(保存在程序集中)→转成操作系统原代码

   跨语言 ↑   跨平台 ↓ 

(Mono)c#脚本→MonoC#编译器→IL中间代码→monoRunTIme虚拟机→操作系统原生代码

(IL2CPP)mono直接将中间代码转原生代码。IL2CPP先将中间码转C++,再转原生码

 

*IL2CPP模式可能存在的问题处理

新版本有一个minimal ,比low还要小。       最大测试程度,直接选Hight打包,看抱不报错

如果报错,再创建这个Link.xml 去配置 。配置规则,用到了再来查。上面是注释下面是方法

 下面是没有被裁剪,但它本身是泛型的时

 c虽然没有被使用,但它被存在这个类里。所以不会被剥离

二、

我想保留IL2类中的Test方法,只要在这个静态test中使用它一次。  test本身是永远不会被调用的

一个保留泛型类,一个保留泛型方法。

C#各版本新功能和语法

命名可选参数、动态类型

原来需要按顺序传参数,现在写出参数名字,后面跟: 就可以不按规则顺序来传参数

在这种有默认值的函数,甚至可以少些一些参数(前提是你就是要用它的默认值)

线程池

引入命名空间

复习:

记得关闭。数据不互通此时停止Unity线程不会停止这时停止运行,线程才会跟着停止。与主线程数据不互通

线程池:

获取可用的线程数。获取最大的、设置可以同时开启的线程数。比如只能同时开20个    返回一个bool

最大设为20后,第21个不会被创建,它只会等,等到有空位。   

最小的也可以得到、设置

比如min10,max12. 我此时有11. 这时又排进来一个12,因为还没到达最大值,就会创建一个新的线程给12用。  再排进来一个13,因为已经超过MAx,所以不会再新创建,而是排队等空余。

从线程池里取出来一个线程用来执行该方法,也就是把方法加入线程池的排队队列

此时obj是空,如果加一个参数↓ 那么obj就会是这个参数

 *Task任务类

这种方法直接就运行,不需要Start

无返回值↑  有返回值 return↓

想返回什么类型,就填什么类型。其他方法类似

解决方法,主线程中获取Result返回值时停止循环。

异步执行↑ 同步执行↓  Task t =new Task    t.RunSynchronously();

Task t =new Task (Action)

     t.wait()         Task.WaitAny(t1,t2)       Task.WaitAll(t1,t2)     & |

一个&条件,一个|条件   

wait和when,一个群伤一个单体这么理解就好了

通过申明一个这个对象,用它里面的标识符替换用来的bool值(默认是false)

好处是里面有更多功能给我们用延迟取消

*异步方法Async、Await

Asunc其他地方还是同步执行,只有被Await修饰的地方才是异步

你写异步方法的时候就应该习惯用Async结尾              可以带参,可以有返回值,但有限制

1/正常输出123,2/TestAsync挂起 主线程继续执行 等待2结束           3/  2中的Task执行结束,继续执行TestAsync中的3

线程间数据不互通,就像不同方法间参数不互通一样。

网络通信中也会用到这两个关键字

静态导入、异常筛选器、Nameof

  静态导入

 可以不再写类名

比如这里,只有当e这个错误当中的消息包含301时,才会执行后面的逻辑

可以用来给301、302、303等不同错误做区分

nameof使用场景其实比较少,可能配合异常捕获来告诉别人是那个位置(名字)出了错误

 这种情况用tostring就不合适了就可以用nameof

*_字面改进、弃元。out_

一看就知道是九亿如果有类型不同的重载就不能用不确定的匿名

本地函数、ref+临时+返回值

此时test1也变成了900  赋值变为引用

结构体同理

如果要用函数,则也需要ref关键字,return也要加

也没必要写修饰符

*元组、模式匹配

还有很多自带异常类

允许加入自定义类型     元组是值类型

  具体应用↓

弃元符号

模式匹配:

可以直接判断是不是这个值             可以判空                          是int 则直接赋值进i 

switch也可以存,判断条件更多

匿名用的比较少。只是把v存成和o一样的类型

静态本地函数、Using、Null赋值合并、Deconstruct

相当于本地函数不能使用上层函数

此时想要再使用就只能通过传参,

首先得保证using对象有Dispose这个方法

继承这个接口重写该方法,释放逻辑自己定

这种写法,只有在其上层函数结束时才会释放该对象


        a = b?? "1";       a=b,b为空则a=1                a ??= "1";      a为空则=1

解构函数:

因为一个类对象实际是引用类型,直接赋值会造成地址上的关联。而解构函数可以只取出变量值

解构函数可以有多个,每个参数不同,相当于重载一样。这样外面不管什么形式的元组都可以获取

申明一个p,且单独把其中的变量值提取出来

模式匹配增强

判断这个对象的属性是不是这个值,那个属性是不是那个值↑  结合使用↓

你要用传统的写也可以。

配合Switch,可以判断多个条件的满足情况。加分号。   元组则不需要数据结构类

可以连变量名都省略

when关键字可以配合switch使用,要同时满足多个条件,这里抛砖引玉

顶级语法

C#其他功能

时间戳

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL 事务的原理以及长事务的预防和处置

transaction_isolation 隔离级别 读未提交 读提交 视图是在每个 SQL 语句开始执行的时候创建的 可重复读 视图是在事务启动时创建的,整个事务存在期间都用这个视图 串行化…

安装OneNote for Win10 | Win10/Win11

前言 PC端的OneNote分为2个版本,分别是Microsoft Store版本和Office版本,Microsoft Store版本即为OneNote for Win10,此版的OneNote有最近笔记功能,但检索功能不如Office版本,个人认为2个版本各有优劣。 但OneNote f…

【硬件基础】电容的选型

1、电容的理论基础 电容器的本质就是储能,充放电 根据作用可分为:滤波电容,旁路电容,耦合电容,退耦电容,自举电容 2、电容的取值 计算取值,查手册,经验取值 3、电容的选取 分为铝…

“删边“的并查集------反向并查集

目录 1.题目2.思路3.代码 默认大家都会并查集了 1.题目 小美认为,在人际交往中,但是随着时间的流逝,朋友的关系也是会慢慢变淡的,最终朋友关系就淡忘了。 现在初始有一些朋友关系,存在一些事件会导致两个人淡忘了他们…

AssetBundle打包与加载

官方文档 参照视频 1.AssetBundle打包 1.1设置资源的命名和后缀 命名只支持小写 1.2创建Editor文件夹,在里面创建编辑器打包AssetBundle的脚本 using UnityEditor; using System.IO;public class CreateAssetBundles {[MenuItem("Assets/Build AssetBun…

旅游景区公共广播 园区广播 公路服务区广播

旅游景区公共广播 园区广播 公路服务区广播 旅游景区公共广播 旅游景区公共广播(又称背景音乐)简称BGM,它的主要作用是掩盖噪声并创造一种轻松和谐的气氛,是一种创造轻松愉快环境气氛的音乐。掩盖环境噪声,创造与旅游景区相适应的气氛&#…

遥感云计算的一个拐点

GeoForge,一个值得关注的遥感大数据应用 简介 GeoForge是由Ageospatial公司开发的一个基于大语言模型(GeoLLMs)的地理空间分析平台。GeoForg的目的是使每个人都可以轻松进行地图绘制和地理空间分析,无论您是外行还是专家。 Geo for ChatGPT 作者团队已…

07-java基础-锁之AQSReentrantLockBlockingQueueCountDownLatchSemapho

文章目录 0:AQS简介-常见面试题AQS具备特性state表示资源的可用状态AQS定义两种资源共享方式AQS定义两种队列自定义同步器实现时主要实现以下几种方法:同步等待队列条件等待队列 1:AQS应用之ReentrantLockReentrantLock如何实现synchronized不…

双环PID控制详细讲解

参考博客: (1)PID双环控制(速度环和位置环) (2)PID控制(四)(单环与双环PID) (3)内外双环pid算法 0 单环PID 目标位置→系…

阿里云第一次面试记录

java多态? 多态表示一个对象具有多种的状态,具体表现为父类的引用指向子类的实例 Fu f Zi z(); 多态是同一个行为具有多个不同表现形式或形态的能力。 多态就是同一个接口,使用不同的实例而执行不同操作 特点: 对象类型和引用类型…

Opencv 插值方法 总结

一、概括 面试的时候问到了一个图,就是如何将一个算子放缩??我第一反应是resize(),但是后来我转念一想,人家问的是插值方式,今天来总结一下 最邻近插值法原理分析及c实现_最临近插值法-CSDN博…

【数据库】Oracle内存结构与参数调优

Oracle内存结构与参数调优 Oracle 内存结构概览oracle参数配置概览重要参数(系统运行前配置):次要参数(可在系统运行后再优化调整): Oracle数据库服务器参数如何调整OLTP内存分配操作系统核心参数配置Disabling ASMM(禁…

【图文详解】Maven Helper插件解决Maven冲突

文章目录 插件问题解决过程 在面试中解决问题的能力和思路是考察的重点,面试官问会问我们有没有解决过maven冲突。以下造了一个maven冲突,手把手教学如何解决Maven冲突。 插件 插件在idea插件中搜索Maven Helper 问题 解决过程 根据上面日志知道是log…

让生活更加精致的APP?

晚上好,今天博主来介绍几款帮助你条理生活的APP,让你的生活更加精致,充满仪式感。 一.格志日记 一款以“格子”的方式记录日记的APP,非常简单明了,用户可以依据自己的喜好,来自由定义或者删除格…

力扣刷题Days16(js)-67二进制求和

目录 1,题目 2,代码 2.1转换进制数 2.2模拟加法 3,学习与总结 Math.floor() 模拟加法思路回顾 重点复习巩固 模拟加法的思路和学习位运算; 今天没精力了,先休息 1,题目 给你两个二进制字符串 a 和 b ,以二进制…

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的手写数字和符号识别(深度学习训练+UI界面+训练数据集)

摘要:开发手写数字和符号识别对于智能交互系统具有关键作用。本篇博客详细介绍了如何运用深度学习构建一个手写数字和符号识别,并提供了完整的实现代码。该系统基于强大的YOLOv8算法,并对比了YOLOv7、YOLOv6、YOLOv5,展示了不同模…

四元数(Quaternion)的一些性质

四元数(Quaternion)是用于三维旋转和定向的四部分组成的超复数,超复数简单理解就是比abi这样的复数更复杂的复数,其中abi这样的复数我们也可以叫做二元数,表示复平面的一点,对于熟悉欧拉公式的朋友就知道,也可以看成是…

LeetCode 每日一题 Day 95-101

2917. 找出数组中的 K-or 值 给你一个整数数组 nums 和一个整数 k 。让我们通过扩展标准的按位或来介绍 K-or 操作。在 K-or 操作中,如果在 nums 中,至少存在 k 个元素的第 i 位值为 1 ,那么 K-or 中的第 i 位的值是 1 。 返回 nums 的 K-o…

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的田间杂草检测系统(深度学习模型+UI界面+Python代码+训练数据集)

摘要:开发用于田间杂草识别的系统对提高农业运营效率和提升作物产出至关重要。本篇文章详尽阐述了如何应用深度学习技术开发一个用于田间杂草识别的系统,并附上了完备的代码实现。该系统基于先进的YOLOv8算法,并对比了YOLOv7、YOLOv6、YOLOv5…

【c 语言 】位操作符详解

🎈个人主页:豌豆射手^ 🎉欢迎 👍点赞✍评论⭐收藏 🤗收录专栏:C语言 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共同学习、交流进步&…