![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C#
红黑色的圣西罗
#weareacmilan
展开
-
C# HashSet<T>源码浅析
所在框架版本:.Net Framework 4.0.303191.部分变量private const int Lower31BitMask = 2147483647;private const int StackAllocThreshold = 100;private const int ShrinkThreshold = 3;private const string CapacityName = "Capacity";private const string ElementsName = "E原创 2021-06-21 22:03:55 · 178 阅读 · 0 评论 -
C# Queue<T>源码浅析
所在框架版本:.Net Framework 4.0.303191.部分变量private T[] _array; //元素数组private int _head; //队头private int _tail; //队尾private int _size; //元素个数private int _version; //版本号[NonSerialized]private object _syncRoot;private const int _MinimumGrow = 4;原创 2021-06-20 23:27:39 · 240 阅读 · 0 评论 -
C# stack<T>源码浅析
所在框架版本:.Net Framework 4.0.303191.部分变量private T[] _array; //元素数组private int _size; //元素个数private int _version; //版本号[NonSerialized]private object _syncRoot; private const int _defaultCapacity = 4; //默认容量private static T[] _emptyArray = ne原创 2021-06-20 21:14:33 · 114 阅读 · 0 评论 -
C# List<T>源码浅析
所在框架版本:.Net Framework 4.0.303191.部分变量private const int _defaultCapacity = 4; //默认容量private T[] _items; //元素数组private int _size; //元素个数private int _version; //版本号[NonSerialized]private object _syncRoot; private static readonly T[] _emptyArra原创 2021-06-18 04:01:39 · 463 阅读 · 0 评论 -
C# Dictionary<T>源码浅析
所在框架版本:.Net Framework 4.0.303191.Entry结构体,键值对存放的位置private struct Entry { public int hashCode; // 除符号位以外的31位hashCode值, 如果该Entry没有被使用,那么为-1 public int next; //下一个Entry元素的下标索引,如果没有下一个就为-1 public TKey key; //存放元素的键 public TVa原创 2021-06-16 21:44:24 · 475 阅读 · 0 评论 -
C#使用Array.Sort对二维数组排序
二维数组需要这样定义int[][] nums= new int[][] { new int[]{ 1, 2 }, new int[]{ 3, 4 } };有这几种方式,表示拿每个一维数组的第二个元素比较Array.Sort(nums, (x, y) => x[1].CompareTo(y[1]));Array.Sort(nums, (a, b) => a[1] - b[1]); Array.Sort(nums, (a, b) => { return p1[1] - p2原创 2021-04-06 20:11:22 · 1891 阅读 · 1 评论 -
Unity下换装的主要流程
首先,美术可能会给这样一个游戏物体,里面含有所有的部位,并且每个部位上都有SkinnedMeshRenderer可以先剥离一个只含有骨骼信息的预制体出来,方便等会儿再这个预制体上生成需要两个字典,第一个字典用来存储模型上的所有SkinnedMeshRenderer信息,因为模型里面每个部位会有多个不同的装扮,所以嵌套了一个字典,还有一个字典用来存储target上的SkinnedMeshRenderer信息1.生成需要的两个预制体在这里把原始模型和带骨骼的空预制体target生成2.保存需要原创 2021-03-07 21:46:07 · 593 阅读 · 0 评论 -
GetEnumerator()方法在现有集合中的调用
GetEnumerator()用来返回支持 IEnumerator 的对象,在用现有集合调用GetEnumerator()方法时,所使用的集合对象必须是静态的public class Test { static int[] num = new int[] { 1,2,3}; //public static List<int> list = new List<int>(num); //List<int>.Enumer原创 2021-01-05 21:21:44 · 501 阅读 · 0 评论 -
C#迭代器手动调用确保执行finally块
public class Program { static void Main() { IEnumerable<int> MyIterator(DateTime dateTime) { try { for(int i=1;i<=100;i++) {原创 2020-10-23 01:44:54 · 62 阅读 · 0 评论 -
C#匿名类型的生成
有如下匿名类型代码namespace ListNode{ public class Program { static void Main() { var patent1 = new { Title = "Bifocals", YearOfPublication = "1784"原创 2020-07-12 18:42:24 · 407 阅读 · 0 评论 -
C# 匿名数组
public class Program { public static void Main() { (string Team, string[] Players)[] worldCup2006Finalists = new[] { ( TeamName: "France", Players: new stri原创 2020-07-11 21:59:54 · 3651 阅读 · 0 评论 -
C#零碎三
枚举总是具有一个基础类型,可以使除char之外的任意整型原创 2020-05-31 20:43:19 · 173 阅读 · 0 评论 -
C#静态构造函数
除了静态字段和方法,C#还支持静态构造函数,用于对类(而不是类的实例)进行初始化。静态构造函数不显示调用。相反,“运行时”在首次访问类时自动调用静态构造函数。“首次访问类”可能发生在调用普通构造函数时,也可能发生在访问类的静态方法或字段时。由于静态构造函数不能显示调用,所以不允许任何参数。静态构造函数的作用是将类中的静态数据初始化成特定值,尤其是在无法通过声明时的一次简单赋值来获得初始值的时候。class Employee { static Employee()原创 2020-05-12 01:21:44 · 219 阅读 · 0 评论 -
C#零碎 二
在面向对象编程中,封装的作用不仅仅是组合数据和行为,还能隐藏类中的数据和行为的实现细节,使类的内部工作机制不暴露。这减少了调用者对数据进行不恰当修改的几率,同时防止类的使用者根据类的内部实现来编程...原创 2020-05-08 00:05:21 · 150 阅读 · 0 评论 -
属性:取值和赋值方法的访问修饰符
如前所述,好的实践是不要从属性外部访问其字段,否则为属性添加的验证逻辑或其他逻辑可能失去意义。C#2.0允许在属性的实现中为get或set部分指定访问修饰符(但不能为两者都指定),从而覆盖为声明属性指定的访问修饰符。class Program { static void Main() { Employee employee = new Employee(); employee.Initialize(42);原创 2020-05-09 01:08:06 · 175 阅读 · 0 评论 -
C#using和using static 指令
调用静态方法需要附加命名空间和类型名前缀。例如在调用System.Console.WriteLine时,虽然调用的方法是WriteLine(),且当前上下文无其他同名方法,但仍然必须附加命名空间(System)和类型名(Console)前缀。可利用C#6.0新增的using static指令避免这些前缀,如以下代码using static System.Console;namespace Li...原创 2020-04-14 23:48:28 · 8539 阅读 · 0 评论 -
C#零碎 一
C#零碎单引号引起来代表字符,双引号引起来代表字符串Main方法中传入的参数 static int Main(string[] args){}, args参数是用于接收命令行参数的字符串数组c#6.0之后的字符串插值功能,在字符串字面值前加$前缀class HeyYou { static void Main() { string f...原创 2020-04-14 23:27:01 · 131 阅读 · 0 评论