随笔分类 - .Net / C#
摘要:注:基元指可以再代码中使用的最简单的构造. 线程基元构造分为两种,用户模式和内核模式. 用户模式分析: 优点: 1、速度比内核模式块,使用特殊cpu指令来协调线程,协调实在硬件级别发生的. 2、在此构造上的线程池线程一旦发生阻塞,并不会创建的新的线程,因为它不会认为自己发生阻塞.。 3、cpu指令只
阅读全文
摘要:此文例子有误,有时间会更正 前文介绍了基元线程同步构造,主要说了线程协调在用户模式和内核模式下的优缺点,本文将在此基础上介绍实际的应用案列. 1、原子性 CLR保证大部分值类型和引用类型的读写是原子性的,如下代码: private int param = 0; /// <summary> /// 线
阅读全文
摘要:NUGET命令 注:使用前确保nuget是最新版本,升级到最新版本有两种方式: (1)、CMD将nuget升级到最新版本:nuget update -self (2)、扩展中查看nuget是否需要更新. 一、安装 1.安装指定版本类库install-package <程序包名> -version <
阅读全文
摘要:1、简介 相信写过定时任务的小伙伴都知道这个类,非常的轻量级,而且FCL中大量的类使用了这个方法,比如CancellationTokenSource的CancelAfter就是用Timer去做的. 当然FCL中大量的使用了Timer,说明MS对Timer类是信任的.下面就开始介绍这个类的用法.简介很
阅读全文
摘要:Format方法将多个对象格式化成一个字符串Format方法解析格式字符串的原理: (1)、格式字符串中的{0}会被替换成格式字符串之后的第一个参数,以此类推 (2)、Format方法解析格式字符串时,发现可替换参数0,则调用对应参数的IFormattable接口的ToString方法,如果格式化字
阅读全文
摘要:常规的调用ToString()方法,存在两个问题. (1)、调用者无法控制字符串的格式 (2)、调用者不能方便的选择一种特定的语言文化来格式化字符串. 在开发一些国际化的应用时,应用程序需要调用与当前线程不同的语言文化来格式化字符串. so,为了对字符串进行更多的控制,你重写的的ToString()
阅读全文
摘要:应用程序开发过程中经常需要获取对象的字符串表示.Object类中定义了一个ToString的虚方法.所以在任何类型的实例上都能调用该方法. C#中几乎所有的类型都派生自Object,所以如果当前类型没有重写ToString()方法的情况下,调用ToString()方法,默认返回当前类型的名称,有如下
阅读全文
摘要:1、为什么需要StringBuilder类? 因为String类型代表不可变字符串,所以无法对当前String类型实例进行处理.所以FCL提供了System.Text.StringBuilder类型,它可以接受字符串和字符作为参数,并对其进行高效动态处理,最终返回String对象.so,你可以将St
阅读全文
摘要:MSDN关于String的所有Method 1、字符串转字符数组 (1)、ToCharArray()方法,源码如下: 调用代码: 输出结果: (2)、源码如下: 调用代码如下: 输出结果: (3)、源码如下: 作用:清空字符串前后的空格 调用代码如下: (4)、源码如下: 调用代码如下: (5)、源
阅读全文
摘要:1、关于字符串操作对应用程序性能的影响 字符串相等性检查是应用程序常见的操作,于此同时,这也是一种严重损害性能的操作.执行序号(字符串的二进制)相等行检查时,CLR会进行以下操作: 1、判断字符串的长度是否相等,不相等,比较结果直接返回false,如果相等,继续下一步操作 2、比较字符串的长度相等,
阅读全文
摘要:本文只介绍了比较方法,但是EndsWith,IndexOf等方法均采用相同的过程,先设置CultureInfo(一般情况下调用当前线程的CultureInfo,该语言文化可以通过控制面板设置),然后调用CultureInfo实例下面的CompareInfo属性,实例化语言/国家的CompareInf
阅读全文
摘要:.Net Frameword使用System.Globalization.Culture类型表示一个"语言/国家"对(根据RFC 1766标准).例如,'en-US'代表美国英语,'en-AU'代表澳大利亚英语,而'de-DE'代表德国德语. 在CLR中,每个线程都关联了两个特殊的属性,每个属性都引
阅读全文
摘要:.Net Framework中处理字符和字符串的主要有以下这么几个类: (1)、System.Char类 一基础字符串处理类 (2)、System.String类 一处理不可变的字符串(一经创建,字符串便不能以任何方式修改) (3)、System.Text.StringBuilder类 一更高效地构
阅读全文
摘要:.Net Framework中处理字符和字符串的主要有以下这么几个类: (1)、System.Char类 一基础字符串处理类 (2)、System.String类 一处理不可变的字符串(一经创建,字符串便不能以任何方式修改) (3)、System.Text.StringBuilder类 一更高效地构
阅读全文
摘要:1、在类实例被初始化的时候执行 2、在类的静态成员被调用的时候执行 3、静态构造函数只会被执行一次,代码如下: 说明静态构造函数只执行了一次,并将该实例初始化到了内存中.所以结果会显示成累加的情况
阅读全文
摘要:在介绍运行时的关系之前,先从一些计算机基础只是入手,如下图: 该图展示了已加载CLR的一个windows进程,该进程可能有多个线程,线程创建时会分配到1MB的栈空间.栈空间用于向方法传递实参,方法定义的局部变量也在实参上,上图的右侧展示了线程的栈内存,栈从高位内存地址向地位内存地址构建.图中线程已经
阅读全文
摘要:一、命名空间 1、通过使用using关键字引入命名空间,减少代码量 命名空间对相关的类型进行逻辑分组,通过命名空间能快速的定位到相关的类型,例如:在System.IO命名空间下,定义了所有I/O操作的类型,当我们需要使用相关的I/O操作的类型时,就可以引入该命名空间。代码如下: 上面的代码构造了一个
阅读全文
摘要:一、new关键字 CLR要求所有的对象都通过new来创建,代码如下: 以下是new操作符做的事情 1、计算类型及其所有基类型(一直到System.Object,虽然它没有定义自己的实例字段)中定义的所有实例字段需要的字节数.堆上每个对象都需要一些额外的成员,包括“类型对象指针”和"同步索引块"。CL
阅读全文
摘要:FCL的设计者认为,如果能将任何对象的任何实例放到哈希集合中,能带来很多好处。但是这里说一点,还是会存在,哈希码类似的情况,这一点大型网站架构这本书中有介绍,最好做下MD5算法.为此,System.Object提供了GetHashCode,它能获取任何对象的Int32哈希码.如果你定义的类型重写了E
阅读全文
摘要:1、引用类型 FCL(Framework)中的大多数类型都是引用类型,引用类型总是在托管堆中分配的,C#的new操作符会返回对象的内存地址,也就是指对象数据的内存地址。在使用引用类型时,存在以下性能问题,这是我们在开发中必须要注意的: a、内存必须从托管堆上分配(也就是说每new一个对象,会占用内存
阅读全文