![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C#
文章平均质量分 80
W8023Y2014
这个作者很懒,什么都没留下…
展开
-
C#反射(Reflection)的应用
反射(Reflection)是C#里很重要的一个特性,其它语言也有这个特性,比如JAVA。反射这个特性是很实用的,这个到底有多实用呢,我也说不清,如果使用过struts, hibernate, spring等等这些框架的话,便会知道反射这个特性是多么的强大了。好像我列出的都是JAVA的框架,.NET的框架我不了解,有没有我都不知道。但在我接触过的那些框架中,没有一个框架是不使用反射的,没有反射特性转载 2015-08-10 17:13:18 · 935 阅读 · 0 评论 -
【设计和开发一套简单自动化UI框架】
目标:编写一个简单通用UI框架用于管理页面和完成导航跳转最终的实现效果请拉到最下方查看框架具体实现的功能和需求加载,显示,隐藏,关闭页面,根据标示获得相应界面实例提供界面显示隐藏动画接口单独界面层级,Collider,背景管理根据存储的导航信息完成界面导航界面通用对话框管理(多类型Message Box)便于进行需求和功能扩展(比如,在跳出页面之前添加逻辑处理等)转载 2016-08-18 16:32:05 · 1055 阅读 · 0 评论 -
C# 线程池API详解
一、ThreadPool类GetMaxThreads() // 获取可以同时处于活动状态的线程池请求的最大数目。所有大于此数目的请求将保持排队状态,直到线程池线程变为可用。函数原型:public static void GetMaxThreads (out int workerThreads,out int completionPortThreads)转载 2016-10-22 12:45:50 · 1091 阅读 · 0 评论 -
C#并行编程-Task
C#并行编程-Task菜鸟学习并行编程,参考《C#并行编程高级教程.PDF》,如有错误,欢迎指正。目录C#并行编程-相关概念C#并行编程-ParallelC#并行编程-TaskC#并行编程-并发集合C#并行编程-线程同步原语C#并行编程-PLINQ:声明式数据并行 任务简介TPL引入新的基于任务的编程模型,转载 2016-10-22 17:39:08 · 2555 阅读 · 0 评论 -
线程池ThreadPool详解
http://www.cnblogs.com/kissdodog/archive/2013/03/28/2986026.html一、CLR线程池 管理线程开销最好的方式:尽量少的创建线程并且能将线程反复利用(线程池初始化时没有线程,有程序请求线程则创建线程);最好不要销毁而是挂起线程达到避免性能损失(线程池创建的线程完成任务后以挂起状态回到线程池中,等待下次请求);通过一转载 2016-10-24 11:23:06 · 38399 阅读 · 1 评论 -
ScrollView 最优使用方案
Purpose: 通过采用Grid Layout Group组件的各个参数, 自动控制ScrollView下的Item对象, 利用对象池技术,最优化实现滚动显示信息的功能。 详细使用方法请看源代码。 Author: 赵光辉 Data: 2016/11/20原创 2016-11-20 20:25:58 · 3477 阅读 · 0 评论 -
implicit 详解
用于声明隐式的用户定义类型转换运算符。 如果可以确保转换过程不会造成数据丢失,则可使用该关键字在用户定义类型和其他类型之间进行隐式转换。示例C#复制class Digit{ public Digit(double d) { val = d; } public double val; // ...other members // User-de转载 2017-06-23 09:57:56 · 884 阅读 · 0 评论 -
C#枚举中的位运算权限分配
什么是位运算常用的位运算主要有与(&), 或(|)和非(~), 比如:1 01 & 00 = 00;2 01 | 00 = 01;3 ~01 =0 0;运用在权限设计中 先建立一个枚举表示所有的权限管理操作:1 [Flags] 2 public enum Permissions 3 { 4 Insert = 1, 5转载 2017-08-27 15:42:07 · 1069 阅读 · 0 评论 -
写更适合Unity的C#代码来提高性能
GameObject的SpawnPool应支持“移出屏幕”功能GameObject(比如特效)可能会被频繁的在“使用中”、“不使用”的状态间切换。我们的SpawnPool不应过快地把“刚刚不使用”的GameObject立刻Deactivate掉,否则会引起不必要的Deactivate/Activate的性能消耗。应有一个“从热变冷”的过程:“刚刚不使用”只是移出屏幕;只有“不使用一段时间”的G原创 2018-01-26 17:25:34 · 3608 阅读 · 0 评论 -
C#的通用优化手段
1. 应尽量减少创建C#堆内存对象建议使用成员变量,或者Pool来规避高频创建C#堆内存对象的创建。而且堆内存对象创建本身就是个相对较慢的过程。2. 应为struct对象重载所有object函数为了普适性,C#的struct的默认Equals()、GetHashCode()和ToString()都是较慢实现,甚至涉及反射。用户自定义的struct,都应重载上述3个函数,手动实现,比原创 2018-01-26 17:30:24 · 884 阅读 · 0 评论 -
C#知识点扫盲——GC(Garbage Collector)
摘自:关于C#中垃圾回收GC杂谈在.Net里面垃圾收集的工作方式:运行.NET应用程序时,程序创建出来的对象实例都会被CLR跟踪,CLR都是有记录哪些对象还会被用到(存在引用关系);哪些对象不会再被用到(不存在引用关系)。CLR会整理不会再被用到的对象,在恰当的时机,按一定的规则销毁部分对象,释放出这些对象所占用的内存。CLR是怎么记录对象引用关系的?CLR会把对象关系做成一个“树图”,这样标记他...转载 2018-07-09 17:02:40 · 4094 阅读 · 0 评论 -
C#中out和ref之间的区别
首先:两者都是按地址传递的,使用后都将改变原来参数的数值。其次:ref可以把参数的数值传递进函数,但是out是要把参数清空,就是说你无法把一个数值从out传递进去的,out进去后,参数的数值为空,所以你必须初始化一次。这个就是两个的区别,或者说就像有的网友说的,ref是有进有出,out是只出不进。ref(C# 参考)ref 关键字使参数按引用传递。其效果是,当控制权传递回调用方法时,在方法中对参数...转载 2018-07-09 17:25:09 · 202 阅读 · 0 评论 -
判断一个数是不是2的整数次幂(两种方法)
方法一:拿这个数来除以2,得到商和余数,再用商除以2,又得到商和余数,重复上面的操作,直到商为0,当商为0,余数也为0时,这个数就是2的整数次幂当商为0,余数不为0时,这个数就不是2的整数次幂。程序如下:#include <iostream>using namespace std;int fun(int n){ if(n==1) return 1; else ...转载 2018-07-10 10:01:51 · 3548 阅读 · 0 评论 -
C#技术漫谈之垃圾回收机制(GC)(转)
https://www.cnblogs.com/nele/p/5673215.htmlGC的前世与今生 虽然本文是以.NET作为目标来讲述GC,但是GC的概念并非才诞生不久。早在1958年,由鼎鼎大名的图林奖得主John McCarthy所实现的Lisp语言就已经提供了GC的功能,这是GC的第一次出现。Lisp的程序员认为内存管理太重要了,所以不能由程序员自己来管理。 但后来的日子...转载 2018-08-17 12:47:10 · 312 阅读 · 0 评论 -
详解C# 迭代器
https://www.cnblogs.com/yangecnu/archive/2012/03/17/2402432.html 迭代器模式是设计模式中行为模式(behavioral pattern)的一个例子,他是一种简化对象间通讯的模式,也是一种非常容易理解和使用的模式。简单来说,迭代器模式使得你能够获取到序列中的所有元素而不用关心是其类型是array,list,linked list或者...转载 2018-08-17 14:54:22 · 605 阅读 · 0 评论 -
浅析C# Dictionary实现原理
浅析C# Dictionary实现原理(转载https://flycode.co/archives/225519)目录一、前言 二、理论知识 1、Hash算法 2、Hash桶算法 3、解决冲突算法 三、Dictionary实现 1. Entry结构体 2. 其它关键私有变量 3. Dictionary – Add操作 4. Dictionary – Find...转载 2019-03-04 11:15:25 · 17097 阅读 · 14 评论 -
常用排序算法总结
https://www.cnblogs.com/eniac12/p/5329396.html目录冒泡排序 鸡尾酒排序 选择排序 插入排序 二分插入排序 希尔排序 归并排序 堆排序 快速排序 我们通常所说的排序算法往往指的是内部排序算法,即数据记录在内存中进行排序。 排序算法大体可分为两种: 一种是比较排序,时间复杂度...转载 2019-03-21 15:01:48 · 298 阅读 · 0 评论 -
IEEE制定的浮点数
IEEE制定的浮点数表示规则;了解: 目前C/C++编译器标准都遵照IEEE制定的浮点数表示法来进行float,double运算。这种结构是一种科学计数法,用符号、指数和尾数来表示,底数定为2——即把一个浮点数表示为尾数乘以2的指数次方再添上符号。下面是具体的规格: 符号位阶码尾数长度 float...原创 2019-04-22 11:04:15 · 749 阅读 · 0 评论 -
Socket.BeginReceive 参数解释
Socket.BeginReceive 方法 (Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object).NET Framework (current version)其他版本 开始从连接的 Socket 中异步接收数据。命名空间: System.N原创 2016-06-15 17:06:05 · 10734 阅读 · 0 评论 -
uLua+SimpleFramework常见问题的解答及学习笔记
uLua+SimpleFramework常见问题的解答及学习笔记 本文所使用的uLua+SimpleFramework版本,没有特别指明的情况下,是使用了0.4.0.2 for NGUI版本。 1 ulua的标准库函数print在ulua里面是否有for Unity3D的封装2 uLua是怎样把Unity3D的类导出给lua语言去调用的?转载 2016-07-12 14:22:31 · 1958 阅读 · 0 评论 -
Unity3D游戏开发之SQLite让数据库开发更简单
一、什么是SQLite?SQLite是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中,以嵌入式作为它的设计目标,它占用资源非常的低,因此适合在嵌入式设备如Android、Ruby on Rails等中使用。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟和C、C++、Ruby、Python、C#、PHP、Java等编程语言转载 2016-06-30 14:39:34 · 1997 阅读 · 0 评论 -
C#一些实用的,容易被遗忘的特性,经验和技巧
突然想到,想要通过名字来获得枚举的值,看了不少的资料,发现上面都只是解释枚举的语法而已,对于它的实际应用,一点也不提及,难道只能用switch来判断?不好吧,这样也未免太土了点。后来发现了枚举还有这样的用法,真的很使用,看代码: namespace EnumTest{ enum date { sun, mon, tue, wes, thu, fri, sat }转载 2015-08-10 17:02:03 · 486 阅读 · 0 评论 -
程序员,用NuGet管理好你的包包
点击打开链接每个女人都有很多包包;其实男人也有,但只有会写程序的男人才有 —— 代码世界中的大“包”小“包”。这些大包小包,有花钱买的,有从开源市场淘的,也有自己或同事亲手制作的。包包有个特点:容易坏,更新快,新品多。于是,市场上有了包包专卖店,家里有了专门放包包的衣橱。于是,女人经常逛街买包包,经常整理衣橱里的包包。而男人呢,不喜欢逛街,不喜欢整理。。。面对越来越多的包包,很转载 2015-09-02 17:15:15 · 615 阅读 · 0 评论 -
关于利用反射调用程序集中的函数属性的代码
敲了一天的代码,才这么点。不过收获很多,分享备忘。 总算把很神秘的反射摸清楚了。using System.CodeDom.Compiler;using System.Collections;using System.Reflection;using System.Text;using UnityEngine;using Microsoft.CSharp;using System;原创 2015-10-02 20:02:07 · 484 阅读 · 0 评论 -
单例模板
/* 有人可能会问,实现singleton的代码并不多,我们没必要搞这么一个机制来做代码复用吧? 的确,我们复用的代码并不是很多,但是,我想代码复用的目的不仅仅是减少代码量,其最重要的目的还是在于保持行为的一致性。 以便于使用与维护。(用函数替换代码段便是一个很好的例子)。 对于这里的singleton类来讲,如果不做这个设计,我们在每个具体的singleton类内部实原创 2015-10-02 20:33:42 · 398 阅读 · 0 评论 -
HashTable、HashSet和Dictionary的区别
http://www.cnblogs.com/akwwl/p/3680376.html 1.HashTable 哈希表(HashTable)表示键/值对的集合。在.NET Framework中,Hashtable是System.Collections命名空间提供的一个容器,用于处理和表现类似key-value的键值对,其中key通常可用来快速查找,同时key是区分大小写;val转载 2015-11-04 10:02:12 · 435 阅读 · 0 评论 -
Unity3d 一个优秀的程序必备的几种设计模式
unity编程众所周知,它是属于脚本化,脚本没有一个具体的概念跟架构,导致在项目过程中,经常出现哪里需要实现什么功能,就随便添加脚本,结果,就造成了一片混乱,不好管理。更有甚者,自己的写的代码闲置一段时间后,再去想找某个功能的实现,都要在视图中翻来覆去找半天。哎!请容许我在此感叹一声,这还是你写的东西么?因此,一个好的设计模式是多么的重要啊,那么,我们在使用unit转载 2015-10-03 14:05:29 · 1967 阅读 · 0 评论 -
C# 序列化数据保存在本地
using UnityEngine;using System.Collections;using System.IO;using System;using System.Xml.Serialization;using System.Runtime.Serialization.Formatters.Binary;using System.Collections.Generic;pub原创 2015-11-10 08:41:22 · 4223 阅读 · 0 评论 -
C# 的三种序列化方法
http://www.oschina.net/translate/serialization-in-csharp序列化是将一个对象转换成字节流以达到将其长期保存在内存、数据库或文件中的处理过程。它的主要目的是保存对象的状态以便以后需要的时候使用。与其相反的过程叫做反序列化。序列化一个对象为了序列化一个对象,我们需要一个被序列化的对象,一个容纳被序列化了的对象转载 2015-11-10 08:47:37 · 1135 阅读 · 0 评论 -
关于删除链表元素的操作
这是正确的方式一:var data = new List() { "One", "Two", "Three", "One", "One", "Four" };for (int i = 0; i < data.Count; i++){ if (data[i] == "One") { data.RemoveAt(i--); }}这是正确的方式二:v原创 2015-11-12 10:46:50 · 1546 阅读 · 0 评论 -
Unity中C# 文件本地读取,本地保存等实例
using UnityEngine;using System.Collections;using System.IO;using System;public class FileReadWrite : MonoBehaviour { //不同平台下StreamingAssets的路径是不同的,这里需要注意一下。 public static readonly string Pat原创 2015-11-16 21:09:09 · 14780 阅读 · 0 评论 -
C#实现各种格式文件的复制
// string path1 = @"F:\unity生命周期.png"; // string path2 = @"E:\unity生命周期.png"; // FileCopy (path2, path1); //实现文件复制 void FileCopy(string path1, string path2) { int bufferSize = 10240; Stream原创 2015-11-17 20:58:05 · 2282 阅读 · 0 评论 -
23种设计模式全解析
一、设计模式的分类总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式转载 2015-12-29 09:03:03 · 694 阅读 · 0 评论 -
简单理解Socket
http://www.cnblogs.com/dolphinX/p/3460545.htmlTCP/IP要想理解socket首先得熟悉一下TCP/IP协议族, TCP/IP(Transmission Control Protocol/Internet Protocol)即传输控制协议/网间协议,定义了主机如何连入因特网及数据如何再它们之间传输的标准,从字面意转载 2016-01-05 16:28:09 · 485 阅读 · 0 评论 -
EasyTouch与UGUI的结合使用
http://blog.csdn.net/AnYuanLzh/article/details/50145151#目录(?)[-]描述上控制代码上demo工程补充 201512041、描述单指转动、双指移动、双指放缩。 注意:在要一个RectTransform上添加ColliderBox组件,具体及其它设置请参考我的demo工程。上转载 2016-03-10 14:06:01 · 3224 阅读 · 2 评论 -
FastSocket.Net
https://github.com/ihaoqihao/FastSocket.NetOverview项目地址:https://github.com/devhong/FastSocket.Net 在Nuget官方源中搜索fastsocket可快速安装引用QQ群:257612438FastSocket内置了命令行、二进制、thrift协议,基于此开发了Zo转载 2016-03-13 13:45:52 · 4228 阅读 · 0 评论 -
protobuf-net 与 C#中几种序列化的比较
C#中几种序列化的比较,此次比较只是比较了 序列化的耗时和序列后文件的大小。几种序列化分别是:1. XmlSerializer2. BinaryFormatter3. DataContractSerializer4. DataContractJsonSerializer5. protobuf-net前四种为.Net 自带的类库,最后一种为 G转载 2016-02-29 16:34:41 · 6039 阅读 · 0 评论 -
方法的直接调用,反射调用与……Lambda表达式调用
方法的直接调用,反射调用与……Lambda表达式调用想调用一个方法很容易,直接代码调用就行,这人人都会。其次呢,还可以使用反射。不过通过反射调用的性能会远远低于直接调用——至少从绝对时间上来看的确是这样。虽然这是个众所周知的现象,我们还是来写个程序来验证一下。比如我们现在新建一个Console应用程序,编写一个最简单的Call方法。class Program{ sta转载 2016-03-24 21:07:39 · 1170 阅读 · 0 评论 -
详解.NET IL代码
转载:https://blog.csdn.net/CNHK1225/article/details/53569075下面是一个简单的 C# 原始码: 1 2 3 4 5 6 7 8 9 10 usingSystem; publicclass...转载 2019-06-06 10:25:07 · 1645 阅读 · 0 评论