![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C#
渡水寻彼岸
这个作者很懒,什么都没留下…
展开
-
单核,多核,线程,进程的理解
2、线程:Cpu调度和分配的基本单位进程:一个进程中会有多个线程。(多个线程分别做不同的事情)由进程控制块,程序段,数据段三部分组成。由操作系统调度。单核多线程:单核cpu轮流执行多个线程,通过给每个线程分配cpu时间片来实现多核多线程:多个线程分配给多个核心处理,相当于多个线程并行执行3、多核cpu和单核Cpu的区别单核:cpu只有1个独立的cpu核心单元,运行的线程数少,不利于同时运行多个程序,执行速度慢多核:cpu只有多个独立的cpu核心单元,运行的线程数多,有利于同时运行多个程...原创 2021-02-23 17:39:13 · 3886 阅读 · 2 评论 -
字符编码笔记
ASCII码:一个英文字母(不分大小写)占一个字节的空间,一个中文汉字占两个字节的空间。一个二进制数字序列,在计算机中作为一个数字单元,一般为8位二进制数,换算为十进制。最小值-128,最大值127。如一个ASCII码就是一个字节。UTF-8编码:一个英文字符等于一个字节,一个中文(含繁体)等于三个字节。中文标点占三个字节,英文标点占一个字节。Unicode编码:一个英文等于两个字节,一个中文(含繁体)等于两个字节。中文标点占两个字节,英文标点占两个字节。字节(Byte /bait/ n. [C原创 2022-05-11 22:02:31 · 852 阅读 · 0 评论 -
as 的使用
A as Bas的操作对象为引用类型,不会发生装箱拆箱操作,安全转换,经常和is搭配使用当A是B类型或者B类型的派生类才能转换成功,否则为null在C#中提供的很好的类型转换方式总结为:Object => 已知引用类型——使用as操作符完成;Object => 已知值类型——先使用is操作符来进行判断,再用类型强转换方式进行转换;已知引用类型之间转换——首先需要相应类型提供转换函数,再用类型强转换方式进行转换;已知值类型之间转换——最好使用系统提供的Conver类所涉及的静态原创 2022-03-04 21:37:04 · 938 阅读 · 0 评论 -
IL Runtime
背景 iOS无法热更的原因 苹果AppStore的审核准则中,明令禁止应用程序分配具有可执行权限的内存 带有JIT功能的脚本虚拟机无法运行 无法加载动态链接库 安卓Google Play强制64位之后也必须使用IL2CPP了 Lua 和il runtime 都可以解释执行 从2015年开始研发,现在最新版本是2.0 线上有多款mmo,卡牌,休闲,棋牌游戏使用il runtime 2、原理C#的运行原理:c#代码编译成为cil(中间语言),然后再由cil原创 2022-02-13 18:42:28 · 1941 阅读 · 0 评论 -
用 C# 实现带键值的优先队列
Timus 1037. Memory managementTimus 1037. Memory management 要求你实现一个内存管理器。1037. Memory managementTime Limit: 2.0 secondMemory Limit: 16 MBBackgroundDon't you know that at school pupi转载 2016-01-14 00:18:24 · 2096 阅读 · 0 评论 -
C#垃圾回收机制详解
GC的前世与今生虽然本文是以.net作为目标来讲述GC,但是GC的概念并非才诞生不久。早在1958年,由鼎鼎大名的图林奖得主John McCarthy所实现的Lisp语言就已经提供了GC的功能,这是GC的第一次出现。Lisp的程序员认为内存管理太重要了,所以不能由程序员自己来管理。但后来的日子里Lisp却没有成气候,采用内存手动管理的语言占据了上风,以C为代表。出于同样的理由,不同的人却又转载 2016-12-21 22:35:37 · 346 阅读 · 0 评论 -
C#使用Protocol Buffer(ProtoBuf)进行Unity中的Socket通信
首先来说一下本文中例子所要实现的功能:基于ProtoBuf序列化对象使用Socket实现时时通信数据包的编码和解码下面来看具体的步骤:一、Unity中使用ProtoBuf导入DLL到Unity中,创建网络传输的模型类:?12345678910转载 2016-12-27 23:04:20 · 3041 阅读 · 0 评论 -
dispose 和 null区别
GameObject obj = new GameObject();obj.dispose() 和 obj = null 的区别是:dispose的功能是将obj对象销毁, 而obj= null则是将obj指引指向空原创 2017-06-25 23:07:18 · 3480 阅读 · 0 评论 -
C#中委托为什么类型安全
C#中的委托 和 C++中的函数指针 非常相似都是在一个方法参数中传入 另一个方法的指针但是C#中传入的是delegate定义的方法, C++中传入的是一个指针即int32所以问题就来了, c++中的函数指针为int32, 那么任何指针都是int32, 所以有可能传入的不是想要的方法的指针但是C#中被delegate定义的方法在传入对应的方法时候,会监测对应的方法参数和方法类型原创 2017-08-12 10:20:30 · 2000 阅读 · 0 评论 -
C# partial 说明
1. 什么是局部类型?C# 2.0 引入了局部类型的概念。局部类型允许我们将一个类、结构或接口分成几个部分,分别实现在几个不同的.cs文件中。局部类型适用于以下情况:(1) 类型特别大,不宜放在一个文件中实现。(2) 一个类型中的一部分代码为自动化工具生成的代码,不宜与我们自己编写的代码混合在一起。(3) 需要多人合作编写一个类。局部类型是一个纯语言层的编译转载 2016-01-13 23:51:38 · 272 阅读 · 0 评论 -
C#中DllImport用法汇总
最近使用DllImport,从网上google后发现,大部分内容都是相同,又从MSDN中搜集下,现将内容汇总,与大家分享。大家在实际工作学习C#的时候,可能会问:为什么我们要为一些已经存在的功能(比如Windows中的一些功能,C++中已经编写好的一些方法)要重新编写代码,C#有没有方法可以直接都用这些原本已经存在的功能呢?答案是肯定的,大家可以通过C#中的DllImport直接调用这转载 2016-01-12 00:29:28 · 305 阅读 · 0 评论 -
Unity3d 引擎原理详细介绍
体系结构 为了更好地理解游戏的软件架构和对象模型,它获得更好的外观仅有一名Unity3D的游戏引擎和编辑器是非常有用的,它的主要原则。Unity3D 引擎 Unity3D的是一个屡获殊荣的工具,用于创建交互式3D应用程序在多个平台.Unity3D由游戏引擎和编辑器。该引擎包含的软件组件,在游戏的研究与开发中最常见的和经常性的任务。发动机所涵盖的主题包括声音,图形,物转载 2015-09-28 23:36:37 · 1086 阅读 · 0 评论 -
where T : class泛型类型约束
where T : class泛型类型约束类型参数约束,.NET支持的类型参数约束有以下五种:where T : struct | T必须是一个结构类型where T : class T必须是一个类(class)类型where T : new() | T必须要有一个无参构造函数where T : NameOfBaseClass | T必须继承名为NameOfBaseCl原创 2015-10-18 12:50:11 · 315 阅读 · 0 评论 -
C#编码规范
1 规范目的 ……………………………………………………… 32 适用范围 ……………………………………………………… 33 代码注释 ……………………………………………………… 3 3.1 代码注释约定............................................ 3 3.2 模块头部注释规范.................转载 2015-09-15 22:45:12 · 329 阅读 · 0 评论 -
C#调用C++
关于这个问题,出现的原因有1.在C#中想调用已有的C++写好的功能模块,不想重复制造。2.一个系统与其他系统接口的对接3.某些模块功能如果用C++实现会提高效率或者该模块负责人喜欢用C++实现步骤:1.在VS下建立一个DLL的工程,并进行相关接口的编写,写C++类的时候需要注意添加#ifndef LX_DLL_CLASS_EXPORTS #de原创 2015-09-04 23:33:31 · 413 阅读 · 0 评论 -
C#实现IDispose接口
C#实现IDispose接口.net的GC机制有两个问题:首先GC并不能释放所有资源,它更不能释放非托管资源。其次,GC也不是实时的,所有GC存在不确定性。为了解决这个问题donet提供了析构函数public class TestClass : System.IDisposable{ //供程序员显式调用的Dispose方法 publi转载 2015-11-13 17:59:51 · 1038 阅读 · 0 评论 -
BindingFlags说明
为了获取返回值,必须指定 BindingFlags.Instance 或 BindingFlags.Static。指定 BindingFlags.Public 可在搜索中包含公共成员。指定 BindingFlags.NonPublic 可在搜索中包含非公共成员(即私有成员和受保护的成员)。指定 BindingFlags.FlattenHierarchy 可包含层次结构上的静转载 2016-01-17 00:16:22 · 260 阅读 · 0 评论 -
C#委托的介绍
C#委托的介绍(delegate、Action、Func、predicate) 委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递。事件是一种特殊的委托。 1.委托的声明 (1). delegate delegate我们常用到的一种声明 Delegate至少0个参数,至多32个参数,可以无返回值,也可以指定返回值类型。转载 2016-01-07 00:29:54 · 214 阅读 · 0 评论 -
Unity中消息事件的封装与运用
大家在开发Unity的时候,为了方便开发一般都会采用消息事件,消息事件主要是做啥的?我们如何去封装,如何去运用消息事件处理事情。接下来就给大家介绍一下:消息事件顾名思义,是通过消息触发的事件。比如大家去完成某个任务,完成后才会触发另一个事件的发生,这种情况我们就会使用消息事件等等吧。消息事件的使用主要是通过添加消息监听,然后分发消息处理事情。那我们如何去封装我们的消息系统,转载 2016-01-07 00:37:48 · 1993 阅读 · 0 评论 -
战斗框架设计
游戏内的战斗框架涉及多个模块,包括技能,施法单元等。大芒果对wow的实现可施法单元Unit将会执行castspell,对某个目标使用某个法术进行施法。看起来所有的AI功能都是由CreatureAI来做的,每个精灵都会有一个CreatureAI指针,用来管理自己的行为逻辑,包括移动,施法等。例如施法的时候,会取出与自己关联的实体对象Unit* pCaster,然后调用Unit的Cas原创 2016-01-26 00:02:47 · 2803 阅读 · 0 评论 -
C#反射Assembly 详细说明
1、对C#反射机制的理解2、概念理解后,必须找到方法去完成,给出管理的主要语法3、最终给出实用的例子,反射出来dll中的方法反射是一个程序集发现及运行的过程,通过反射可以得到*.exe或*.dll等程序集内部的信息。使用反射可以看到一个程序集内部的接口、类、方法、字段、属性、特性等等信息。在System.Reflection命名空间内包含多个反射常用的类,下面表格列出了常用的几个类转载 2016-01-11 23:50:44 · 345 阅读 · 0 评论 -
Unity3D脚本的基本架构
LateUpdate():如果启用,会在每一帧中被调用。在所有Update函数被调用之后才执行。有利于程序的有序执行。(例如:跟随摄像机就应该在LateUpdate执行,因为它跟随的对象也许需要在Update中执行)OnPreCull():摄像机在场景中剔除对象前被调用。剔除确定哪些对象是在摄像机中是可见的。OnPreCull是在剔除这个过程之前被调用的,此消息被发送到所有附加了脚本的摄像转载 2015-09-28 23:37:42 · 882 阅读 · 1 评论