![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
csharp
狂小鸿
爱玩游戏
展开
-
理解foreach运行原理:IEnumerable<T> & IEnumerator<T>以及相关系统api
首先是foreach的实际工作: foreach (var item in humanList) { Console.WriteLine(item.ToString()); } #region 实际工作 IEnumerator<Human&...原创 2020-02-25 21:01:21 · 179 阅读 · 0 评论 -
C# 通过实现`IComparable<T>`和`IComparer<T>`接口从而使用List.Sort()方法对用户类/类型进行排序
要让List的内置Sort()方法对某个类排序,只需让这个类实现IComparable<T>接口,并增加一个CompareTo()方法。实际上IComparable<T>接口只有CompareTo()一个方法:以下是系统定义: // // 摘要: // 定义由值类型或类实现的通用比较方法,以为排序实例创建类型特定的比较方法。 /...原创 2020-02-25 18:04:10 · 297 阅读 · 0 评论 -
C#实现位数组
使用和bool[]完全相同,每个数据只占一位,相比可以极大的节约空间。用到的知识索引器移位运算符实现代码 class BitArray { int[] arr; int length; public int Length { get { ...原创 2020-02-24 08:43:09 · 158 阅读 · 0 评论 -
c#引用类型和值类型的理解及具体的区分使用
引用类型和值类型的概念面向.NET框架的所有语言的数据类型都由通用系统类型CTS(Common Type System)定义。• 值类型:存储数据本身• 引用类型:存储数据的引用(内存地址)划分堆和栈装箱和拆箱当值类型的数据转换为引用类型时为装箱,反之为拆箱。分析...原创 2020-02-12 16:15:54 · 381 阅读 · 0 评论 -
C#自增操作符使用过程中发现的一个现象
先看代码: int[] arr1 = new int[] { 0, 0, 0 }; int[] arr2 = new int[] { 1, 2, 3 }; int i = 0; arr1[i++] = arr2[i];运行的调试结果:原创 2020-02-11 18:57:25 · 92 阅读 · 0 评论 -
C#利用属性实现单例模式
class Program { static void Main(string[] args) { SingleCat thePoolSingleCat = SingleCat.TheOnlySingleCat; } } class SingleCat { static ...原创 2020-02-03 21:41:27 · 1114 阅读 · 0 评论 -
C#封装字段的访问
@[TOC]C#封装字段的访问权限访问封装内容这里是开头一个对象要得要另一个不同类型对象的私有字段中存储的数据,唯一的途径就是使用返回该数据的公共方法。换言之,除了通过给出的get/set方法,同一类型的一个对象可以直接访问另一对象的私有字段。代码实现 class EncapsulationTest { private int t; pu...原创 2020-02-02 15:53:49 · 343 阅读 · 0 评论