随笔分类 -  .Net / C# CLR(Common Language Runtime)公共语言运行时

摘要:注:基元指可以再代码中使用的最简单的构造. 线程基元构造分为两种,用户模式和内核模式. 用户模式分析: 优点: 1、速度比内核模式块,使用特殊cpu指令来协调线程,协调实在硬件级别发生的. 2、在此构造上的线程池线程一旦发生阻塞,并不会创建的新的线程,因为它不会认为自己发生阻塞.。 3、cpu指令只 阅读全文
posted @ 2021-11-08 17:33 郑小超 阅读(154) 评论(0) 推荐(0) 编辑
摘要:此文例子有误,有时间会更正 前文介绍了基元线程同步构造,主要说了线程协调在用户模式和内核模式下的优缺点,本文将在此基础上介绍实际的应用案列. 1、原子性 CLR保证大部分值类型和引用类型的读写是原子性的,如下代码: private int param = 0; /// <summary> /// 线 阅读全文
posted @ 2021-11-08 17:09 郑小超 阅读(112) 评论(0) 推荐(0) 编辑
摘要:回调在日常开发中,很常见,区别于非托管C/C++的非成员函数,framework提供了委托这种类型安全的机制,来完成回调.示例如下: public class Program { public static void Start() { new Machine().Run(); } } public 阅读全文
posted @ 2021-06-04 19:11 郑小超 阅读(82) 评论(0) 推荐(0) 编辑
摘要:Format方法将多个对象格式化成一个字符串Format方法解析格式字符串的原理: (1)、格式字符串中的{0}会被替换成格式字符串之后的第一个参数,以此类推 (2)、Format方法解析格式字符串时,发现可替换参数0,则调用对应参数的IFormattable接口的ToString方法,如果格式化字 阅读全文
posted @ 2018-06-12 09:14 郑小超 阅读(12489) 评论(0) 推荐(0) 编辑
摘要:常规的调用ToString()方法,存在两个问题. (1)、调用者无法控制字符串的格式 (2)、调用者不能方便的选择一种特定的语言文化来格式化字符串. 在开发一些国际化的应用时,应用程序需要调用与当前线程不同的语言文化来格式化字符串. so,为了对字符串进行更多的控制,你重写的的ToString() 阅读全文
posted @ 2018-06-06 00:04 郑小超 阅读(1273) 评论(0) 推荐(0) 编辑
摘要:应用程序开发过程中经常需要获取对象的字符串表示.Object类中定义了一个ToString的虚方法.所以在任何类型的实例上都能调用该方法. C#中几乎所有的类型都派生自Object,所以如果当前类型没有重写ToString()方法的情况下,调用ToString()方法,默认返回当前类型的名称,有如下 阅读全文
posted @ 2018-06-04 18:32 郑小超 阅读(1844) 评论(0) 推荐(0) 编辑
摘要:MSDN关于String的所有Method 1、字符串转字符数组 (1)、ToCharArray()方法,源码如下: 调用代码: 输出结果: (2)、源码如下: 调用代码如下: 输出结果: (3)、源码如下: 作用:清空字符串前后的空格 调用代码如下: (4)、源码如下: 调用代码如下: (5)、源 阅读全文
posted @ 2018-05-28 18:35 郑小超 阅读(2282) 评论(0) 推荐(0) 编辑
摘要:1、关于字符串操作对应用程序性能的影响 字符串相等性检查是应用程序常见的操作,于此同时,这也是一种严重损害性能的操作.执行序号(字符串的二进制)相等行检查时,CLR会进行以下操作: 1、判断字符串的长度是否相等,不相等,比较结果直接返回false,如果相等,继续下一步操作 2、比较字符串的长度相等, 阅读全文
posted @ 2018-05-27 04:26 郑小超 阅读(855) 评论(1) 推荐(0) 编辑
摘要:本文只介绍了比较方法,但是EndsWith,IndexOf等方法均采用相同的过程,先设置CultureInfo(一般情况下调用当前线程的CultureInfo,该语言文化可以通过控制面板设置),然后调用CultureInfo实例下面的CompareInfo属性,实例化语言/国家的CompareInf 阅读全文
posted @ 2018-05-21 19:02 郑小超 阅读(7300) 评论(0) 推荐(0) 编辑
摘要:.Net Frameword使用System.Globalization.Culture类型表示一个"语言/国家"对(根据RFC 1766标准).例如,'en-US'代表美国英语,'en-AU'代表澳大利亚英语,而'de-DE'代表德国德语. 在CLR中,每个线程都关联了两个特殊的属性,每个属性都引 阅读全文
posted @ 2018-05-21 18:35 郑小超 阅读(998) 评论(0) 推荐(0) 编辑
摘要:.Net Framework中处理字符和字符串的主要有以下这么几个类: (1)、System.Char类 一基础字符串处理类 (2)、System.String类 一处理不可变的字符串(一经创建,字符串便不能以任何方式修改) (3)、System.Text.StringBuilder类 一更高效地构 阅读全文
posted @ 2018-05-14 00:15 郑小超 阅读(2543) 评论(0) 推荐(0) 编辑
摘要:前面说过C#源文件经过C#编译器生成一个可执行的exe文件,该可执行的PE文件由以下几个部分组成: (1)、PE32(+)头 Windows要求的标准信息 (2)、CLR头 小信息块(CLR模块特有的),这个头包含模块生成时所面向的CLR的major(主)和minor(次)版本号,一些标志,一个Me 阅读全文
posted @ 2018-02-28 19:09 郑小超 阅读(285) 评论(0) 推荐(0) 编辑
摘要:1、将包含多个类型的源代码文件转换为可以部署的文件。有如下Program.cs的文件,代码如下: 该应用程序实现了打印"Hello World"的功能,该应用程序中引用到的系统类型都来自于MSCorLib.dll文件,简言之,该应用程序定义了一个类型,该类型使用到了其他公司提供的类型. 下面通过命令 阅读全文
posted @ 2018-02-27 18:11 郑小超 阅读(1568) 评论(0) 推荐(0) 编辑
摘要:1、通用类型简介 CLR中的一切都围绕类型展开,因为IL是面向对象的高级机器语言.类型向应用程序和其他类型公开了功能.通过类型,用一种编程语言写的代码能与另一种编程语言写的代码沟通.由于类型是CLR的根本,所以MS制定了一个正式的规范来描述类型的定义和行为,这就是"通用类型系统"(Common Ty 阅读全文
posted @ 2018-02-07 17:31 郑小超 阅读(305) 评论(0) 推荐(0) 编辑
摘要:1、Framework类库简介 .Net Framework类库包含Framework类库(Framework Class Library,FCL).FCL是一组DLL程序集的统称,其中含有数千个类型的定义,每个类型都公开了一些功能.MS还发布了其它库,比如MS还发布了Windows Azure S 阅读全文
posted @ 2018-02-07 16:00 郑小超 阅读(388) 评论(0) 推荐(0) 编辑
摘要:1、托管程序二次编译的问题,以及微软做的优化 五、CLR加载程序集代码时,JIT编译器对性能的产生的影响中介绍了CLR下托管应用程序的二次编译对性能产生的影响.事实上,在IL编译成本机代码的时候的时候 确实会影响性能,也确实会分配动态内存. 但是,在微软做了大量的性能优化工作之后,将这些额外的开销保 阅读全文
posted @ 2018-02-01 18:46 郑小超 阅读(477) 评论(0) 推荐(0) 编辑
摘要:1、CLR首次加载代码造成的性能损失 四、CLR执行程序集中代码介绍了CLR在首次执行一个类的时,会初始化一个内部结构,然后当目标方法被首次调用时,JITComplier函数(JIT编译器)会验证IL代码并将IL代码编译成本地CPU指令并存储到动态内存中,这意味着一旦应用程序终止,编译好的代码也会被 阅读全文
posted @ 2018-02-01 18:37 郑小超 阅读(812) 评论(0) 推荐(0) 编辑
摘要:三、加载公共语言运行时中介绍了在安装了.Net Framework中加载公共语言运行时,公共语言运行时加载程序集的过程.以及通过vs stdio设置源码编译的目标平台的过程. 本问主要介绍公共语言加载完程序集之后,执行程序集中的代码的过程. 一、IL中间语言 1、IL简介 一、源代码-面向CLR的编 阅读全文
posted @ 2018-01-23 20:49 郑小超 阅读(1250) 评论(0) 推荐(0) 编辑
摘要:二、源代码=>程序集及程序集概念介绍中介绍了源代码通过C#编译器生成程序集(或者可执行应用程序exe)的整个过程,本文主要介绍公共语言运行时与程序集的关系. 1、通过C#编译器编译之后生成的每个程序集既可以是可执行程序(exe),也可以使dll(其中含有一组由可执行应用程序使用的类型),最终都由CL 阅读全文
posted @ 2018-01-15 16:30 郑小超 阅读(761) 评论(0) 推荐(0) 编辑
摘要:本文脉络图如下: 1、CLR(Common Language Runtime)公共语言运行时简介 (1)、公共语言运行时是一种可由多种编程语言一起使用的"运行时". (2)、CLR的核心功能可由面向CLR的所有语言使用,例如:"运行时"使用异常来报告错误,因此面向CLR的所有语言都使用异常来报告错误 阅读全文
posted @ 2018-01-04 00:10 郑小超 阅读(1474) 评论(3) 推荐(1) 编辑

点击右上角即可分享
微信分享提示