摘要: 一、总的区别 值类型 引用类型内存分配地点 分配在栈中 分配在堆中效率 效率高,不需要地址转换 效率低,需要进行地址转换内存回收 使用完后,立即回收 使用完后,不是立即回收,等待GC回收赋值操作 进行复制,创建一个同值新对象 只是对原有对象的引用函数参数与返回值 是对象的复制 是原有对象的引用,并不产生新的对象类型扩展 不易扩展 容易扩展,方便与类型扩展二、赋值区别static void Main(string arg[]) { int x = 10; int y = x; Console.WriteLine(x.ToString() + "," + y.ToString( 阅读全文
posted @ 2011-05-23 21:56 microsoftzhcn 阅读(192) 评论(0) 推荐(0) 编辑
摘要: C#中有两种常量类型,分别为readonly(运行时常量)与const(编译时常量),本文将就这两种类型的不同特性进行比较并说明各自的适用场景。工作原理 readonly为运行时常量,程序运行时进行赋值,赋值完成后便无法更改,因此也有人称其为只读变量。 const为编译时常量,程序编译时将对常量值进行解析,并将所有常量引用替换为相应值。 下面声明两个常量:public static readonly int A = 2; //A为运行时常量public const int B = 3; //B为编译时常量下面的表达式:int C = A + B;经过编译后与下面的形式等价:int C = A 阅读全文
posted @ 2011-05-23 21:53 microsoftzhcn 阅读(269) 评论(0) 推荐(0) 编辑
摘要: 在程序中,进行类型转换是常见的事。那么在C#中支持以前语言的类型转换方法,即用类型名进行强行转换,例如:object objTest = new NewType();NewType newValue = (NewType)objTest;但是这样转换,有个严重的问题,就是在把objTest强转换成NewType类型对象的时候,这个过程是不安全的,因此需要用try-catch语句来进行保护。这样一来,比较安全的代码方式应该如下所示。object objTest = new NewType();NewType newValue = null;try{ newValue = (NewType)obj 阅读全文
posted @ 2011-05-23 21:53 microsoftzhcn 阅读(185) 评论(0) 推荐(0) 编辑