![]() |
|
||||||||||||||
| | 网站首页 | 数据库教程 | web编程 | 服务器 | 程序设计 | | ||
|
||
|
||||||
| CLR基础 | ||||||
作者:佚名 文章来源:不详 点击数: 更新时间:2007-8-26 ![]() |
||||||
|
CLR(Common Language Runtime)可以说是.NET的核心,它管理着垃圾收集,代码安全验证等重要内容。
我们知道c#的编译器有两种模式:Debug和Release,这两种模式对IL代码和最终的本地代码的优化是不一样的。例如在Debug模式下,我们用ILDasm查看IL代码会看见里面有好多的NOP指令,就是控操作的意思,为了方便调试用。但是Release下却没有这些指令。 Compiler Switch Settings C# IL Code Quality JIT Native Code Quality 以上就是不同的设置对代码产生的不同影响。 .NET的类库非常庞大,下面介绍几个最基础的: System 包含每个应用程序都要使用的全部基本类型 System.Data 包含用于数据库通讯和数据处理的类型 System.Drawing 包含处理2D图形的类型 System.IO 包含用于执行流IO操作和浏览目录文件的类型 System.Net 包含一些网路通讯和Internet通讯的类型 System.Runtime.InteropServices 包含与非托管平台互操作的类型 System.Security 包含保护数据和资源的类型 System.Text 包含处理采用各种编码方式的文件的类型 System.Threading 包含异步操作和同步资源访问的类型 System.Xml 包含用于处理XML框架的类型![]() 下面我们用张图说明一下CTS,CLS,CLR以及C#,VB.NET等之间的关系 我们可以看到CTS是最大的集合,它描述了类型的定义及行为方式。而CLS它详细定义了一个最小特征子集。CLR/CTS支持的特性要比CLS多了很多。而C#,VB.NET等是微软在CTS下的一个实现。你自己也可定义语言,只要它实现了CLS并且符合CTS就可以在.NET运行。当然编译器自己写了....如果要想使用CTS的所有特性,只有只使用IL代码写程序才可以。然后使用ILAsm工具,把IL代码编译成可执行文件运行。不过这可不是一般人能够做到的。要想检查程序集是否与CLS兼容,可以在命名空间前加上[assembly:CLSCompliant(true)]这个特性,编译器在编译的时候就会检查兼容性。 下面看个例子: using System;![]() [assembly: CLSCompliant(true)]![]() namespace SomeLibrary ...{![]() ![]() public sealed class SomeLibraryType ...{![]() ![]() public UInt32 Abc() ...{ return 0; }![]() ![]() public void abc() ...{ }![]() ![]() private UInt32 ABC() ...{ return 0; } } }以上程序会出现两个警告,第一个是方法Abc返回了一个unsigned的整数,其他一些语言不支持unsigned整数值。第二个因为两个方法Abc和abc只有大小写和返回类型差别。这样VB.NET和其他一些语言有可能不能识别这两个方法。如果我们把abc方法改成私有,警告就会消失,这也就是说兼容性的检查只会检查公有方法及一些类型。
本文来源:http://blog.csdn.net/kittyjie/archive/2007/08/16/1746513.aspx
|
||||||
| 文章录入:admin 责任编辑:admin | ||||||
| 【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 | ||||||
| 网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!) |
| | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 网站公告 | 网站地图 | 管理登录 | | |||
|