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#其他功能
时间戳
相关文章:
C#四部曲(知识补充)
Unity跨平台原理 .Net相关 只要编写的时候遵循.NET的这些规则,就能在.NET平台下通用 各种源码→根据.NET规范编写→(虚拟机)生成CIL中间码(保存在程序集中)→转成操作系统原代码 跨语言← 跨平台↓ Unity跨平台原理(Mono) c#脚本→MonoC#编…...
Vue中的数据交互有几种方式
1. 单向数据流: Vue中的数据流是单向的,从父组件传递到子组件。父组件可以通过props将数据传递给子组件,子组件通过props接收并使用这些数据。这种方式适用于父子组件之间的简单通信。 2. 事件: 子组件可以通过触发自定义事件来…...
2.MySQL中的数据类型
整数类型: tinyint(m): 1个字节 范围(-128~127) 常用:性别 0和1表示性别;状态 0和1表示 int(m): 4个字节 范围(-2147483648~2147483647) 常用:数值 数值类型中的长度m是值显示长度,只有字段指定zerofill时有用 例如…...
身份证查询真伪-三要素查验-ios身份证实名认证接口调用
身份证实名认证接口联网核验是实名认证的关键一步,通过翔云OCR识别出的身份证信息,联网上传全国人口数据库,通过比对查找,确认人口数据库是否有身份证号和姓名匹配的信息,如果有那就确认身份证是真的,如果没…...
@EnableWebMvc介绍和使用详细demo
EnableWebMvc是什么 EnableWebMvc 是 Spring MVC 中的一个注解,它用于启用 Spring MVC 框架的基本功能,以便你可以使用 Spring MVC 提供的特性来处理 Web 请求。 通常情况下,在基于 Spring Boot 的应用中,并不需要显式地使用 Ena…...
VC-旅游系统-213-(代码+说明)
转载地址: http://www.3q2008.com/soft/search.asp?keyword旅游系统 旅游信息管理系统开题报告 一、研究目的 旅游信息管理系统能帮助旅行社在游客的市场开拓、游客的信息管理、客户服务等方面进行综合处理。使旅行社能够准确的掌握客户的市场动态,充分了解对客户…...
重学SpringBoot3-ErrorMvcAutoConfiguration类
更多SpringBoot3内容请关注我的专栏:《SpringBoot3》 期待您的点赞👍收藏⭐评论✍ 重学SpringBoot3-ErrorMvcAutoConfiguration类 ErrorMvcAutoConfiguration类的作用工作原理定制 ErrorMvcAutoConfiguration示例代码1. 添加自定义错误页面2.自定义错误控…...
剑指offer面试题34 丑数
考察点 空间换时间提效知识点 题目 分析 这里面其实用到了一点点的数学知识,丑数的定义是只包含2,3,5因子的数。现在要求第1500个丑数,最简单的办法就是从数字1开始遍历,依次判断每个数字是不是丑数,如果…...
C++ std::list的merge()使用与分析
看到《C标准库第2版》对list::merge()的相关介绍,令我有点迷糊,特意敲代码验了一下不同情况的调用结果。 《C标准库第2版》对list::merge()的相关介绍 list::merge()定义 merge()的作用就是将两个list合并在一起,函数有2个版本:…...
Quartz的分布式功能化设计
Quartz的分布式功能化设计 文章目录 Quartz的分布式功能化设计主体功能实现依赖API例子JOBJob记录表设计java具体代码DateDOOperatorDOSysQuartzJobDOPageDTOQuartzJobDTOQuartzJobPageDTOQuartzJobStatusEnumQuartzJobControllerIQuartzJobServiceQuartzJobServiceImplQuartzJ…...
Caffeine缓存
本地缓存基于本地环境的内存,访问速度非常快,对于一些变更频率低、实时性要求低的数据,可以放在本地缓存中,提升访问速度 使用本地缓存能够减少和Redis类的远程缓存间的数据交互,减少网络 I/O 开销,降低这…...
AI辅助研发正在成为造福人类的新生科技力量
目录 1.AI用于药物研发 (1)药物靶点预测: (2)药物分子设计: (3)药物筛选: (4)药效和安全性预测: (5)…...
程序分享--排序算法--归并排序
关注我,持续分享逻辑思维&管理思维; 可提供大厂面试辅导、及定制化求职/在职/管理/架构辅导; 有意找工作的同学,请参考博主的原创:《面试官心得--面试前应该如何准备》,《面试官心得--面试时如何进行自…...
pg数据库和mysql区别
区别一 PostgreSQL (通常称为 PG) 和 MySQL 都是广泛使用的关系型数据库管理系统 (RDBMS)。虽然它们都是用于存储和管理数据的关系数据库,但它们在一些方面有很大的区别,如下所述: 数据类型:PostgreSQL 支持更多的数据类型&#…...
Jetpack Compose 动画正式开始学习
1. 简单值动画 //将一个Color简单值 从一个值 变化到另一个 另一个简单值 就用 animateColorAsStateval backgroundColor by animateColorAsState(if (tabPage TabPage.Home) Purple100 else Green300) 动画其实就是 一个状态不停发生改变导致 组件不断重组产生的过程 2.…...
iOS 17.4报错: libopencore-amrnb.a[arm64]
iOS 17.4报错: libopencore-amrnb.a[arm64] iOS 17.4 模拟器运行报错解决方案 iOS 17.4 模拟器运行报错 Building for ‘iOS-simulator’, but linking in object file (/XXX/lib/libopencore-amrnb.a[arm64]2) built for ‘iOS’ 解决方案 在Podfile里添加如下设…...
鼓楼夜市管理wpf+sqlserver
鼓楼夜市管理系统wpfsqlserver 下载地址:鼓楼夜市管理系统wpfsqlserver 说明文档 运行前附加数据库.mdf(或sql生成数据库) 主要技术: 基于C#wpf架构和sql server数据库 功能模块: 登录注册 鼓楼夜市管理系统主界面所有店铺信…...
【五、接口自动化测试】5分钟掌握python + requests接口测试
你好啊!我是山茶,一个持续探索AI 测试的程序员! 在做接口测试时,在python中内置了HTTP库 urllib,可以用于发送http请求。基于urllib二次封装的三方库Requests,相较于urllib更佳简介易用。所以,…...
双边市场的基本理论
双边市场由两个不同类型的用户组成,通过一个中介机构或平台进行交易,其中一边用户的决策会影响另一边用户的结果。这种影响被称为间接网络外部性,它导致了平台在吸引和平衡两边用户时面临的挑战。 平台定价在双边市场中成为核心问题…...
R统计学2 - 数据分析入门问题21-40
往期R统计学文章: R统计学1 - 基础操作入门问题1-20 21. 如何对矩阵按行 (列) 作计算? 使用函数 apply() vec 1:20 # 转换为矩阵 mat matrix (vec , ncol4) # [,1] [,2] [,3] [,4] # [1,] 1 6 11 16 # [2,] 2 7 12 17 # [3,] …...
相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了: 这一篇我们开始讲: 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下: 一、场景操作步骤 操作步…...
基于Uniapp开发HarmonyOS 5.0旅游应用技术实践
一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架,支持"一次开发,多端部署",可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务,为旅游应用带来…...
el-switch文字内置
el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...
在四层代理中还原真实客户端ngx_stream_realip_module
一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡(如 HAProxy、AWS NLB、阿里 SLB)发起上游连接时,将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后,ngx_stream_realip_module 从中提取原始信息…...
React19源码系列之 事件插件系统
事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...
【单片机期末】单片机系统设计
主要内容:系统状态机,系统时基,系统需求分析,系统构建,系统状态流图 一、题目要求 二、绘制系统状态流图 题目:根据上述描述绘制系统状态流图,注明状态转移条件及方向。 三、利用定时器产生时…...
大模型多显卡多服务器并行计算方法与实践指南
一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...
ArcGIS Pro制作水平横向图例+多级标注
今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作:ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等(ArcGIS出图图例8大技巧),那这次我们看看ArcGIS Pro如何更加快捷的操作。…...
图表类系列各种样式PPT模版分享
图标图表系列PPT模版,柱状图PPT模版,线状图PPT模版,折线图PPT模版,饼状图PPT模版,雷达图PPT模版,树状图PPT模版 图表类系列各种样式PPT模版分享:图表系列PPT模板https://pan.quark.cn/s/20d40aa…...
sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!
简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求,并检查收到的响应。它以以下模式之一…...


















