当前位置: 首页 > news >正文

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&#xff09…...

程序分享--排序算法--归并排序

关注我,持续分享逻辑思维&管理思维; 可提供大厂面试辅导、及定制化求职/在职/管理/架构辅导; 有意找工作的同学,请参考博主的原创:《面试官心得--面试前应该如何准备》,《面试官心得--面试时如何进行自…...

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更佳简介易用。所以,…...

双边市场的基本理论

双边市场由两个不同类型的用户组成,通过一个中介机构或平台进行交易,其中一边用户的决策会影响另一边用户的结果。这种影响被称为间接网络外部性,它导致了平台在吸引和平衡两边用户时面临的挑战。 平台定价在双边市场中成为核心问题&#xf…...

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,] …...

rknn优化教程(二)

文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK,开始写第二篇的内容了。这篇博客主要能写一下: 如何给一些三方库按照xmake方式进行封装,供调用如何按…...

23-Oracle 23 ai 区块链表(Blockchain Table)

小伙伴有没有在金融强合规的领域中遇见,必须要保持数据不可变,管理员都无法修改和留痕的要求。比如医疗的电子病历中,影像检查检验结果不可篡改行的,药品追溯过程中数据只可插入无法删除的特性需求;登录日志、修改日志…...

蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练

前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1):从基础到实战的深度解析-CSDN博客,但实际面试中,企业更关注候选人对复杂场景的应对能力(如多设备并发扫描、低功耗与高发现率的平衡)和前沿技术的…...

如何理解 IP 数据报中的 TTL?

目录 前言理解 前言 面试灵魂一问:说说对 IP 数据报中 TTL 的理解?我们都知道,IP 数据报由首部和数据两部分组成,首部又分为两部分:固定部分和可变部分,共占 20 字节,而即将讨论的 TTL 就位于首…...

腾讯云V3签名

想要接入腾讯云的Api,必然先按其文档计算出所要求的签名。 之前也调用过腾讯云的接口,但总是卡在签名这一步,最后放弃选择SDK,这次终于自己代码实现。 可能腾讯云翻新了接口文档,现在阅读起来,清晰了很多&…...

HubSpot推出与ChatGPT的深度集成引发兴奋与担忧

上周三,HubSpot宣布已构建与ChatGPT的深度集成,这一消息在HubSpot用户和营销技术观察者中引发了极大的兴奋,但同时也存在一些关于数据安全的担忧。 许多网络声音声称,这对SaaS应用程序和人工智能而言是一场范式转变。 但向任何技…...

uniapp 小程序 学习(一)

利用Hbuilder 创建项目 运行到内置浏览器看效果 下载微信小程序 安装到Hbuilder 下载地址 :开发者工具默认安装 设置服务端口号 在Hbuilder中设置微信小程序 配置 找到运行设置,将微信开发者工具放入到Hbuilder中, 打开后出现 如下 bug 解…...

go 里面的指针

指针 在 Go 中,指针(pointer)是一个变量的内存地址,就像 C 语言那样: a : 10 p : &a // p 是一个指向 a 的指针 fmt.Println(*p) // 输出 10,通过指针解引用• &a 表示获取变量 a 的地址 p 表示…...

Java求职者面试指南:Spring、Spring Boot、Spring MVC与MyBatis技术解析

Java求职者面试指南:Spring、Spring Boot、Spring MVC与MyBatis技术解析 一、第一轮基础概念问题 1. Spring框架的核心容器是什么?它的作用是什么? Spring框架的核心容器是IoC(控制反转)容器。它的主要作用是管理对…...

Matlab实现任意伪彩色图像可视化显示

Matlab实现任意伪彩色图像可视化显示 1、灰度原始图像2、RGB彩色原始图像 在科研研究中,如何展示好看的实验结果图像非常重要!!! 1、灰度原始图像 灰度图像每个像素点只有一个数值,代表该点的​​亮度(或…...