引言:
微软.NET平台中类型使用的基本原理
----微软 .NET平台系列文章之二
译文/赵湘宁
在上一次的讨论中,我介绍了许多微软.NET平台公共语言运行时CLR (common language runtime) 中与类型有关的基本概念。
摘要:
摘要:
信息安全是计算机应用的首要问题之一,但目前关于.net加密功能的范例却少之又少。有鉴于此,本文探讨了在.net平台下加密/解密文件的一般过程,并提供了一个加密/解密文件的工具。
web服务以不容置疑的态势迅速发展,促使许多单位开始考虑.net之类的开发平台。但是,出于对安全问题的担心,一些单位总是对采用新技术心存顾虑。好在有许多成熟的安全和网络技术,例如虚......
摘要:
应用程序开发技术正发生着一次质的飞跃,从根本上大幅度提高开发人员的生产效率,它开启了一道通向全新概念的应用程序的大门。
在过去,开发人员一直通过集成本地系统服务来构建应用程序。在这种模式下,开发人员可以访问丰富的开发资源并能严格控制应用程序的行为。
如今,开发人员在很大程度上已挣脱了这种模式的束缚,致力于构建具有复杂结构的n层系统,这种系统能将网络中各处的众多的应用程序进行集成......
微软.NET平台中类型使用的基本原理----微软.NET平台系列文章之二(译文/赵湘宁)
微软.net平台中类型使用的基本原理
----微软 .net平台系列文章之二
译文/赵湘宁
在上一次的讨论中,我介绍了许多微软.net平台公共语言运行时clr (common language runtime) 中与类型有关的基本概念.其中重点讨论了如何从system.object类型中派生出所有别的类型,以及程序员能够使用的多种强制类型转换机制(如c#操作符).最后,我提到了编译器如何使用名字空间以及公共语言运行时clr是如何忽略名字空间的.
在本文中,我们将继续上次类型基础的讨论.首先从介绍简单类型开始,然后迅速进入关于引用类型与数值类型的讨论.对所有的开发人员来说,熟练掌握引用类型与数值类型的应用差别尤其重要.在编写代码的过程中,如果对这两种类型使用不当会导致程序bug并引起性能问题.
简单类型
某些常用的数据类型,许多编译器通过简单的语法就可以对它们进行处理.例如,在c#语言中,你可以使用下列语法来分配一个整型变量:
int a = new int(5);
但是我敢肯定,你会觉得用这样的语法来声明与初始化一个整型变量很笨拙.好在许多编译器(包括c#编译器)允许你使用下面的语法来代替:
int a = 5;
这就使代码的可读性更强.不论使用那一种语法,产生的中间语言时一样的.
凡编译器直接支持的数据类型称为简单数据类型.这些简单数据类型直接映射到基类库中存在的类型.例如c#中int类型直接映射到system.int32.所以可以将下列两行代码与前面提到的两行代码是一样的:
system.int32 a = new system.int32(5);
system.int32 a = 5;
图一是c#中简单数据类型与基类库中有关类型的对应表(其它语言也会提供类似的简单数据类型)
引用类型与数数值类型
当从受管堆(managed heap)中分配对象时,new操作符返回对象的内存地址.通常将这个地址存储在一个变量当中.这种方式就是引用类型的变量,因为变量不包含实际对象的位,而是引用对象的位.
在处理引用类型时会有一些性能问题要考虑.首先,内存必须要从受管堆中分配,这样能强制垃圾回收.其次,引用类型总是通过指针来存取.所以每次引用堆中对象的成员时,为了实现期望的处理,必须要产生与执行收回指针的代码.这反而影响程序的大小与程序执行的速度.
除了引用类型外,实际的对象系统中还有轻量级的数值类型.数值类型对象不能在可回收垃圾的堆中分配,并且表示对象的变量不包含对象的指针,而是变量包含对象本身.因为变量包含着对象,处理对象也就不必考虑指针回收的问题,从而改进了性能.
图二中的代码说明了引用类型与数值类型差别.rectangle类型的声明使用了结构,而没有使用更普通的类.在c#中,使用结构声明的类型是个数值类型,而使用类声明的是引用类型....
下一页 摘要:
摘要:.net计划是微软继推出dos、windows之后的又一个革命性的开发平台。在整个.net框架中提出了大量的新概念和新技术。本文从软件开发的角度对.net框架进行阐述,同时对.net和j2ee进行比较,并对.net提出了几点疑问。
关键词:.net、xml(可扩展标记性语言)、soap(简单对象访问协议)、windowsdna、集合(assembly)、通用语言运行时(cl......