网站公告列表

  没有公告

加入收藏
设为首页
联系站长
您现在的位置: 网络学院 >> 程序设计 >> VB编程 >> 文章正文
  CLR基础            【字体:
CLR基础
作者:佚名    文章来源:不详    点击数:    更新时间:2007-8-26    

CLR(Common Language Runtime)可以说是.NET的核心,它管理着垃圾收集,代码安全验证等重要内容。
正在装载数据……
 要想查看自己电脑上装了哪些版本的CLR,MS 的.NET SDK2.0 中有一个工具叫:CLRVer.exe 运行这个工具在加上-all开关,即可查看。

我们知道c#的编译器有两种模式:Debug和Release,这两种模式对IL代码和最终的本地代码的优化是不一样的。例如在Debug模式下,我们用ILDasm查看IL代码会看见里面有好多的NOP指令,就是控操作的意思,为了方便调试用。但是Release下却没有这些指令。

Compiler Switch Settings                            C# IL Code Quality                JIT Native Code Quality
/optimize- /debug- (this is the default)       Unoptimized                          Optimized
/optimize- /debug(+/full/pdbonly)                Unoptimized                          Unoptimized
/optimize+ /debug (-/+/full /pdbonly)          Optimized                               Optimized

以上就是不同的设置对代码产生的不同影响。

我们知道c#去掉了指针的功能,不能直接操作内存,其实这样说不太准确。只能说是C#不推荐大家使用指针。但是并没有真正的消除指针。大家可以在方法前加上unsafe关键字,并且在项目的属性里面选择允许不安全代码运行,就可以正常使用指针。但是带来的一些不安全因素由自己负责。

.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 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
     如何在ado中使用connect…
     vb 贪吃蛇 单人版游戏 (…
     关于在vb中进行com组件的…
     用vb6.0编写自我升级的程…
     vb自动登陆网络站点详解…
     vb打造超酷个性化菜单(…
  • Cookie又见Cookie-使用Html…

  • 关于CTreeCtrlr的=NM_DBLCL…

  • Template-Based Classes的用…

  • BCB/Delphi中常用的VCL函数说…

  • Oracle SQL语句查询例子

  • RegisterClass

  • Crystal report viewer 控件…

  • Java中-classpath和路径的使…

  • Java Class Loader

  • Eclipse RCP技术简介

  •   网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    网络学院©2007 www.23book.net
    为您提供web编程,vb编程,vc编程,服务器架设管理,数据库设计等方面的知识 站长:David