C#
LuckyJoey
见贤思齐焉,见不贤而内自省也
展开
-
Unity鼠标移动旋转相机
void MouseRotate() { float rotaH = Input.GetAxis("Mouse X"); float rotaV = Input.GetAxis("Mouse Y"); transform.Rotate(Vector3.up * rotaH * rotateSpeed * Time.deltaTime, Space.World); transform.Rotate(Vector3.right * -ro.原创 2021-08-03 17:53:55 · 303 阅读 · 0 评论 -
MVC、MVP、MVVM浅要理解记录
架构设计框架的出现,是为了解决一些问题与痛点。减少耦合,开发变得更简单,提高开发效率。MVC、MVP、MVVM是递进发展的前端框架。MVP与MVVM是基于MVC发展出来的。解决的核心问题为,让开发者关注的点越来越少,更加专注于视图层的开发。MVC开发者需要同时关注Model、View、Controller,单向:V=>C=>M,M的改动会动过事件分发改变V的渲染。缺点:耦合度相对高,需要关注三方。pureMVC纯正MVC,每个功能都有Model、View、Controlle.原创 2020-06-02 14:42:53 · 182 阅读 · 0 评论 -
计算一个点是否在一个多边形范围内
/// 计算一个点是否在一个多边形范围内/// 如果过该点的线段与多边形的交点不为零且距该点左右方向交点数量都为奇数时 该点再多边形范围内public static bool PolygonIsContainPoint(Vector3 point, List<Vector3> vertexs){ //判断测试点和横坐标方向与多边形的边的交叉点 int le...原创 2020-01-15 09:42:59 · 701 阅读 · 0 评论 -
身份证号码验证
private bool CheckIDCard18(string idNumber) { if (idNumber.Length < 18) return false; long n = 0; if (long.TryParse(idNumber.Remove(17), out n) == false |...原创 2019-12-06 17:49:50 · 40762 阅读 · 0 评论 -
C# 计算字符串MD5值
public class GetMd5Hash : MonoBehaviour{ // Start is called before the first frame update void Start() { Debug.Log(GetMd5HashString("Hello World")); } string GetMd5HashSt...原创 2019-10-24 15:33:33 · 576 阅读 · 0 评论 -
C#复制文件夹操作
static public bool CopyFolderContents(string SourcePath, string DestinationPath, string ignoreWord = "") { try { if (Directory.Exists(SourcePath)) { ...原创 2019-07-15 11:15:01 · 549 阅读 · 0 评论 -
C#中Action与delegate、EventHandler的差异
转自:https://www.cnblogs.com/linng/p/4757128.htmlAction是一个泛型的委托,其内部即使用delegate去实现,当普通的delegate定义的参数与Action个数、类型一致时,两者实现的功能是一样的。只是Action的方式更加简洁、规范。如下: 1 public delegate void DoDelegate(...转载 2019-04-08 10:50:17 · 1413 阅读 · 0 评论 -
C#委托的介绍(delegate、Action、Func、predicate)
转自:https://www.cnblogs.com/akwwl/p/3232679.html委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递。事件是一种特殊的委托。 1.委托的声明 (1). delegate delegate我们常用到的一种声明 Delegate至少0个参数,至多32个参数,可以无返回值,也可以指定返回值...转载 2019-04-08 10:47:15 · 145 阅读 · 0 评论 -
C# 字符串操作--减少垃圾回收压力
1、使用string.Empty给一个空字符串变量赋初始值String.Empty是一个指代,而””是具体的实现string filter=“”;//不建议string filter=string.Empty; //建议2、使用str.Length == 0做空串比较最快的方法:if (str.Length == 0)其次:if (str == String.Empty)或 ...转载 2019-01-14 09:57:43 · 1697 阅读 · 0 评论 -
超简单C#获取带汉字的字符串真实长度(单个英文长度为1,单个中文长度为2)
正常情况下,我们是直接去string的length的,但是汉字是有两个字节的,所以直接用length是错的。如下图:所以应该用以下代码来获取长度:? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18...转载 2018-12-11 11:58:16 · 1577 阅读 · 0 评论 -
c#截取指定字节长度的字符串(中文英文)
/// <summary>截取指定字节长度的字符串</summary> /// <param name="str">原字符串</param> ///<param name="len">截取字节长度</param> /// <return原创 2018-12-21 13:51:03 · 1224 阅读 · 0 评论 -
如何通过datetime在c#中排序集合
一个列表,需要按DateTime排序,MyStuff类看起来像: public class MyStuff{ public int Type {get;set;} public int Key {get;set;} public DateTime Created {get;set;}}我需要能够通过创建(DateTime)字段对集合列表进行排序。您似乎...翻译 2018-12-10 11:23:40 · 5735 阅读 · 0 评论 -
中英文字符字节长度判断GB2312(Unity支持GB2312编码的方式)
Encoding.GetEncoding("gb2312").GetBytes(str).Length;Unity支持GB2312编码的方式1.在Unity软件目录中搜索:I18N.dll和I18N.CJK.dll。会搜索到多个,任意一个都行。 2.把上面搜索到的2个dll文件复制到Asset目录下。 3.OK了。 在unity编辑器里面运行没问题,运行build版报“Argume...原创 2018-12-20 09:56:25 · 1073 阅读 · 0 评论 -
通过IL分析C#中的委托、事件、Func、Action、Predicate之间的区别与联系
转自:http://blog.jobbole.com/99171/一直以来都是对于事件与委托比较混淆,而且不太会用。找了个时间,总结了一下,感觉清晰了很多。先说一下个人理解的结论吧:delegate是C#中的一种类型,它实际上是一个能够持有对某个方法的引用的类。 delegate声明的变量与delegate声明的事件,并没有本质的区别,事件是在delegate声明变量的基础上包装而成...转载 2019-04-19 16:10:52 · 287 阅读 · 0 评论 -
sort排序-1和1的区别
这个是sort方法里的那个比较函数的特殊的返回值,比较函数的参数 a 和 b 代表数组里的两个元素,如果 a 小于 b,排序后的数组 a 在 b 前面,此时返回一个负数 (即上面的 return -1)如果 a 等于 b,排序后两者位置不变,此时返回 0 (即上面的 return 0)如果 a 大于 b,排序后 a 在 b 后面, 返回一个正数 (即上面的 return 1)//比较函数一般简写...转载 2019-06-05 10:15:14 · 4603 阅读 · 0 评论 -
C#的Dictionary为引用类型,赋值时需要注意是引用它的地址,还是克隆它的值
dictionary<uint,uint> dic;//原始数据当需要把dic作为值传递赋值时,是赋值引用地址因为Dictionary属于引用类型,引用类型在赋值时,如果直接赋值,是将对象的地址进行了赋值,而不是值。如果需要赋值它的值,如图:dictionary<uint,uint> dicNew = newdictionary<uint,ui...原创 2019-06-06 16:10:20 · 6282 阅读 · 0 评论 -
C# Activator和new的区别
1、你需要动态的创建一个实例模型的时候,就用Activator.CreateInstance(Type type);如果是明确的知道要创建哪个实例的模型,就可以用 new Class1()了。T tInstance= (T)Activator.CreateInstance(typeof(T), new object[] { message });12、基于接口的Remoting对象是不能用...转载 2019-07-10 16:58:22 · 929 阅读 · 0 评论 -
C#语言之“string格式的日期时间字符串转为DateTime类型”的方法
方法一:Convert.ToDateTime(string)string格式有要求,必须是yyyy-MM-dd hh:mm:ss================================================方法二:Convert.ToDateTime(string, IFormatProvider)DateTime dt;DateTimeFormatInfo ...转载 2019-07-31 17:12:10 · 260 阅读 · 0 评论 -
C# struct:无法修改“...”的返回值,因为它不是变量原因
出现这个原因是值类型默认是按值传递的,返回的是栈上的一份临时的、本地的拷贝的值因此即使能对它进行修改也无法反映到原来的值本身上,这是一个毫无何意义的操作,因此编译器就从源头上禁止了这样的操作。解决办法:1.改成class引用类型,这样,就成了一个对象(引用类型),就会返回在堆上的实际地址,修改也会反映到实际的对象2.设置一个中间临时变量,然后再替换整个原来的struct值。这样实...原创 2019-08-08 12:11:05 · 3313 阅读 · 0 评论 -
关于C#的Enum转换Int类型,不使用强转
将枚举类型转换为int在C#里非常简单,直接(int)强转就行了,但是这样写代码不方便使用转换成object与System.Convert.ToInt32();这两种方式都会涉及到装箱拆箱的问题,会产生性能消耗因为任何对象都用gethashcode的方法,枚举是整数类型,返回的哈希值刚好是整数值:public static class EnumTools{ public s...原创 2019-08-12 15:18:44 · 4406 阅读 · 4 评论 -
C#中lock死锁实例教程
C#中lock死锁实例教程 </h1> <div class="clear"></div> <div class="postBody"> http://www.jb51.net/article/54309.htm...转载 2019-08-29 00:15:21 · 341 阅读 · 0 评论 -
C#异常处理,try、catch、finally、throw
异常处理:程序在运行过程中,发生错误会导致程序退出,这种错误,就叫做异常。处理这种错误,就叫做异常处理。 1、轻描淡写Try、Catch、Finally、throw用法 在异常处理中,首先需要对可能发生异常的语句进行异常捕捉,try就是用于预测可能出现的异常。捕获异常并对异常进行处理,就在catch中实现。不管异常发生与否,都会执行finally里面的语句。先看一个例子...转载 2019-09-19 16:17:45 · 3397 阅读 · 0 评论 -
What's int[] a = new int[0] mean? 空数组,不能添加修改
What's int[] a = new int[0] mean? 空数组,不能添加修改原创 2018-11-22 11:56:43 · 328 阅读 · 0 评论 -
C#中stringBuilder和string的区别
What? string 是字符串常量 stringBuffer 是字符串变量(线程安全) stringBuilder 是字符串变量(非线程安全)HOW? 如果看了上面的解释有些不明白的话,那就继续往下看吧,下面的故事更精彩~1、string string是一个不可变的字符串,每次对...转载 2018-11-22 11:36:22 · 4528 阅读 · 0 评论 -
c# list 合并
List<int> listA = new List<int> {1,2,3,5,7,9}; List<int> listB = new List<int> {13,4,17,29,2}; listA.AddRange(listB );//把集合A.B合并 List<int> Result = listA.Union(lis...原创 2018-08-29 11:24:37 · 7873 阅读 · 0 评论 -
在dos下用csc命令编译,提示“csc不是内部或外部命令,也不是可运行的程序... ”
三种方法可以解决:1)右键点击"我的电脑"--"属性"--"高级"--"环境变量"--"系统变量" 将PATH中加上路径:C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319(环境变量之间用英文分号;隔开)2)直接在dos环境的cs相应文件夹目录执行 set Path=C:\WINDOWS\Microsoft.NET\Framework\v4....原创 2018-08-08 10:50:34 · 2905 阅读 · 0 评论 -
C# struct和class的比较
什么是class? class是我们通常所说的类,是面向对象编程的基本概念,一种可以自定义的数据结构类型,C#中的class通常包含字段、属性、方法、构造函数、索引器、操作符等等。在.NET中,所有的类都最终继承自System.Object类,因此是一种引用类型,也就是说,new一个类的实例时,实例的值保存在托管堆(managed heap)中,而类的实例在堆栈(stack)上存放的是该实例在...原创 2018-06-30 09:38:45 · 384 阅读 · 0 评论 -
自动生成 中文随机名字(转)
using UnityEngine;using System.Collections;using System.Text;public class GenerateChineseWords{ /// <summary> /// 随机产生常用汉字 /// </summary> /// <param name="count">...转载 2018-02-08 11:15:05 · 16635 阅读 · 1 评论 -
获取16进制的byte[]数组的和与和的后两位校验值
public byte GetCalibrationValue (byte [] dateByte) { byte byteTemp; int sum = 0; for (int j = 0; j < dateByte.Length - 1; j++) { string str1 = dateByte [j].ToString ("x"); sum += Convert.原创 2017-12-01 18:08:35 · 2329 阅读 · 0 评论 -
Unity Mesh(一) 初步使用Mesh画平面图形
原博:http://blog.csdn.net/nanggong/article/details/54311090据说还可以画各种形状,原理就是所有图形都是由三角形组成的。下面我们一一的解释下:一.画三角形首先,给组件添加MeshFilter和MeshRenderer两个组件转载 2017-10-16 16:41:21 · 6864 阅读 · 1 评论 -
C# 中2,10,16进制及其ASCII码之间转化
C# 中2,10,16进制及其ASCII码之间转化 --------//C#中各种字符类型的转化,使用于串口通信------------ //字符长度的理解 string s = "我是一个2兵"; int len = s.Length;//6个字符 byt转载 2017-10-13 14:10:26 · 1344 阅读 · 0 评论 -
ugui物体随着摄像机跟随3d场景物体显示
using System.Collections;using System.Collections.Generic;using UnityEngine;public class InScreenFollowScene : MonoBehaviour{ private Transform mFollowTrans; private RectTransform原创 2017-10-19 16:34:44 · 896 阅读 · 0 评论 -
Determine whether the text is in Chinese or English
public bool IsChineseCharacter (string str) { Regex regChina = new Regex ("^[^\x00-\xFF]"); Regex regEnglish = new Regex ("^[a-zA-Z]"); if (regEnglish.IsMatch (str)) { return false; }原创 2017-09-22 15:05:05 · 257 阅读 · 0 评论 -
Stack与Queue
Stack(栈)堆栈(Stack)代表了一个后进先出的对象集合。当您需要对各项进行后进先出的访问时,则使用堆栈。当您在列表中添加一项,称为推入元素,当您从列表中移除一项时,称为弹出元素。方法 Clear(); 从 Stack 中移除所有的元素。 bool Contains( object obj ); 判断某个元素是否在 Stack 中。 object Peek(); 返回在 ...原创 2018-09-04 11:33:24 · 353 阅读 · 0 评论 -
【转】面向对象 -多线程 理论知识
1. 基本概念进程: 系统中正在运行的程序。 一条进程就代表当前系统中正在运行的一个程序。每个进程都是相互独立的,每个进程中都有属于自己的内存空间。线程:一个进程想要执行任务,必须通过线程来调度(执行),每个进程至少要有一个线程,如果没有线程,那么该进程(程序)就会退出运行。线程是用来帮助程序执行操作任务,网络加载的路线。我们的设备一般有双核、四核、八核等,其实就是说处理器很强大拥有多...转载 2018-09-04 17:08:34 · 248 阅读 · 0 评论 -
c#运算符
位运算符位运算符作用于位,并逐位执行操作。&、 | 和 ^ 的真值表如下所示:p q p & q p | q p ^ q 0 0 0 0 0 0 1 0 1 1 1 1 1 1 0 1 0 0 1 1 假设如果 A = 60,且 B =...原创 2018-09-13 15:43:30 · 346 阅读 · 0 评论 -
关于C#中 struct使用new 初始化
C#中对于struct我们进行初始化时可以使用new 语句例如有一个结构体Pointstruct Point{float x;float y;}我们将其实例化时可以使用语句:Point p = new Point();这不同于类使用new 语句,我们知道对一个类使用new语句会在托管堆上分配空间,而struct是值类型所以应该在栈上为其分配空间。实际上,以...转载 2018-11-21 16:26:35 · 13407 阅读 · 0 评论 -
Hashtable Dictionary List 谁效率更高
一 前言 很少接触HashTable晚上回来简单看了看,然后做一些增加和移除的操作,就想和List 与 Dictionary比较下存数据与取数据的差距,然后便有了如下的一此测试,当然我测的方法可能不是很科学,但至少是我现在觉得比较靠谱的方法。如果朋友们有什么好的方法,欢迎提出大家来交流下。先来简单介绍这三个容器的各自特点吧 1 hashtable 散列表(也叫哈希表),是根...转载 2018-11-20 21:22:35 · 911 阅读 · 0 评论 -
c# 的List和Dictionary小技巧
List和Dictionary想必是我们平常用到最多的C#容器了,他们使用起来都很简单,所以很多人就可能就没去深究,其实在使用过程中有很多的小技巧能让我们写的代码变得更高效也更安全。1·合理的指定初始容量。List和Dictionary的构造函数都有一个入参为int的构造函数:public Dictionary(int capacity);和public List(int capacity...原创 2018-11-20 20:52:56 · 1143 阅读 · 0 评论 -
C#使用正则表达式
添加引用:using System.Text.RegularExpressions;使用举例程序代码: 1 //初始化字符串 2 string str =this.txtSource.Text; 3 //定义正则表达式规则 4 Regex reg = new Regex("[a-zA-Z]+"); 5 //返回一个结果集 6 ...转载 2018-11-05 15:39:57 · 370 阅读 · 0 评论