C#四部曲(知识补充)

news2024/11/24 13:49:34

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.coloradmin.cn/o/1512409.html

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

相关文章

Stream-JDK8

Stream概念 代码示例 package com.zz.stream;import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.stream.Collectors;/*** 使用Stream流* 找出姓张并且是三个字的名字*/ public class Test {public static void main(Stri…

《向量数据库指南》——Milvus Cloud BYOC:为数据安全而生?

最近,整个硅谷都在关注 OpenAI 和 Anthropic 的动态。先是 Anthropic 发布了 Claude 3,剑指 GPT-4,被媒体认为“打破了 OpenAI 不可战胜的神话”。这也点燃了整个科技圈的热情,纷纷期待 OpenAI 放出 GPT-5 应战。随后(美东时间 3 月 5 日),OpenAI 发布一则官方公告,主题…

Linux认识与学习BASH

Linux认识与学习BASH 认识BASH这个Shellshell是什么系统的合法shell与/etc/shells功能Bash Shell的功能查询命令是否为Bash shell 的内置命令(type)命令的执行与快速编辑按钮 shell的变量功能什么是变量?变量的使用与设置:echo、变量设置规则、unset环境…

1.6数组

一.序言 数组是一组类型相同类型元素的集合,数组的定长的(数组的长度一旦被定义,长度不可改变)。 数组在内存当中是一块连续的空间,可以保存相同类型的多个元素。 二.一维数组 2.1.数组的创建 int arr1[10]; …

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的吸烟检测系统(深度学习+Python代码+PySide6界面+训练数据集)

摘要:本文详细说明了如何利用深度学习开发一个用于监测吸烟行为的系统,并分享了完整的代码实现。该系统采用了先进的YOLOv8算法,同时还使用YOLOv7、YOLOv6、YOLOv5算法,并对它们进行了性能比较,呈现了不同模型的性能指…

bpmn-js系列之Palette

前边写了四篇文章介绍了bpmn.js的基本使用,最近陆续有小伙伴加我催更,感谢对我这个半吊子前端的信任,接着更新bpmn.js的一些高级用法,本篇介绍对左侧工具栏Palette的隐藏和自定义修改 隐藏shape 左侧工具栏Palette有些图标我用不…

NIFI从Oracle11G同步数据到Mysql_亲测可用_解决数据重复_数据跟源表不一致的问题---大数据之Nifi工作笔记0065

首先来看一下整体的流程: 可以看到了用到了上面的这些处理器,然后我们主要看看,这里之前 同步的时候,总是出现重复的数据,奇怪. 比如源表中只有166条数据,但是同步过去以后变成了11万条数据了. ${db.table.name:equals(table1):or(${db.table.name:equals(table2)})} 可以看…

LeetCode169. 多数元素(Java)

给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 示例 1: 输入:nums [3,2,3] 输出:3 示例 …

C++(3/12)

自己封装一个矩形类(Rect)&#xff0c;拥有私有属性:宽度(width)、高度(height)&#xff0c; 定义公有成员函数: 初始化函数:void init(int w, int h) 更改宽度的函数:set_w(int w) 更改高度的函数:set_h(int h) 输出该矩形的周长和 #include <iostream>using name…

设计模式-行为型模式-模版方法模式

模板方法模式&#xff0c;定义一个操作中的算法的骨架&#xff0c;而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。[DP] 模板方法模式是通过把不变行为搬移到超类&#xff0c;去除子类中的重复代码来体现它的优势。 //首…

MinIO权限提升漏洞CVE-2024-24747详细解决办法

漏洞名称&#xff1a; MinIO权限提升漏洞(CVE-2024-24747) 漏洞简介 2024年2月2日&#xff0c;深瞳漏洞实验室监测到一则MinIO 存在权限提升漏洞的信息&#xff0c;漏洞编号&#xff1a;CVE-2024-24747&#xff0c;漏洞威胁等级&#xff1a;高危。 该漏洞是由于用户创建的访…

【机器学习】样本、特征、标签:构建智能模型的三大基石

&#x1f388;个人主页&#xff1a;豌豆射手^ &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 &#x1f917;收录专栏&#xff1a;机器学习 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共同学习、交流进…

如何进行专利布局与专利规避

一、专利布局 WHY 专利布局是指企业或个人在科研或生产过程中&#xff0c;为了保护和利用自身的技术成果&#xff0c;通过综合产业、市场和法律等因素&#xff0c;对专利进行有机结合&#xff0c;构建严密高效的专利保护网&#xff0c;最终形成对企业或个人有利的专利组合。 …

前端JavaScript篇之常见事件

目录 JavaScript常见事件click&#xff08;点击&#xff09;mouseover&#xff08;鼠标悬停&#xff09;keydown&#xff08;按键按下&#xff09;load&#xff08;加载&#xff09;submit&#xff08;提交&#xff09; JavaScript常见事件 JavaScript中的事件是指用户与网页元…

Device Tree (二) - dtb格式

dtb作为二进制文件被加载到内存中&#xff0c;然后由内核读取并进行解析&#xff0c;如果对dtb文件的格式不了解&#xff0c;那么在看设备树解析相关的内核代码时将会寸步难行&#xff0c;而阅读源代码才是了解设备树最好的方式&#xff0c;所以&#xff0c;如果需要更透彻的了…

来来来, SAP BTP下使用CAP来生成PostgreSQL应用(一): Node.js篇

前言 SAP云应用程序编程模型(CAP)是一个语言、库和工具框架&#xff0c;用于构建企业级服务和应用程序。它引导开发人员沿着一条经过验证的最佳实践的“黄金之路”前进&#xff0c;并为反复出现的任务提供大量开箱即用的解决方案。 我们这就来看看SAP BTP的CAP到底提供了哪些…

蓝桥杯--日期统计

目录 一、题目 二、解决代码 三、代码分析 ​四、另一种思路 五、关于set文章推荐 一、题目 二、解决代码 #include <bits/stdc.h> using namespace std; int main() {int arr[100] { 5,6,8,6,9,1,6,1,2,4,9,1,9,8,2,3,6,4,7,7,5,9,5,0,3,8,7,5,8,1,5,8,6,1,8,3,0,…

【DDR】DDR4学习记录

这里以美光DDR4芯片 MT40A512M16HA-075E datasheet 为例&#xff0c;说明DDR4存储器的原理及仿真。   根据开发板手册ug1302&#xff0c;在vcu128&#xff08;xcvu37p&#xff09;开发板上&#xff0c;共具有5块DDR4芯片&#xff0c;在数据信号上4块DDR4具有16位数据线&#…

模拟电子技术实验(二)

单选题 1. 本实验的实验目的中&#xff0c;输出电阻测量是第几个目的&#xff1f; A. 1个。 B. 2个。 C. 3个。 D. 4个。 答案&#xff1a;C 评语&#xff1a;10分 单选题 2.本实验电路有一个元件参数有问题&#xff0c;需要修改&#xff1f; A. …

漏洞发现-漏扫项目篇NucleiYakitGobyAfrogXrayAwvs联动中转被动

知识点 1、综合类-Burp&Xray&Awvs&Goby 2、特征类-Afrog&Yakit&Nuclei 3、联动类-主动扫描&被动扫描&中转扫描 章节点&#xff1a; 漏洞发现-Web&框架组件&中间件&APP&小程序&系统 扫描项目-综合漏扫&特征漏扫&被动…