2014年3月14日

装箱和拆箱的概念和原理

摘要: 装箱的过程为:1. 分配内存: 在托管堆中分配好内存,内存的大小是值类型的各个字段需要的内存量加上托管堆的所有对象都有的两个额外成员—类型对象指针和同步块索引—所需要的内存量之和。2. 复制对象: 将值类型的字段复制到新分配的内存中。3. 返回地址: 将已装箱的值类型对象的地址返回给引用类型的变量。拆箱的过程为:1. 检查实例:首先检查变量的值是否为null,如果是则抛出NullReferenceException异常;再检查变量的引用指向的对象是不是给定值类型的已装箱对象,如果不是,则抛出InvalidCastException异常。2. 返回地址:返回已装箱实例中属于原值类型字段的地址,而 阅读全文

posted @ 2014-03-14 15:30 riky1989 阅读(422) 评论(0) 推荐(0)

.net面试问答(大汇总)

摘要: 用.net做B/S结构的系统,您是用几层结构来开发,每一层之间的关系以及为什么要这样分层?答:从下至上分别为:数据访问层、业务逻辑层(又或成为领域层)、表示层数据访问层:有时候也称为是持久层,其功能主要是负责数据库的访问业务逻辑层:是整个系统的核心,它与这个系统的业务(领域)有关表示层:是系统的UI部分,负责使用者与整个系统的交互。优点: 分工明确,条理清晰,易于调试,而且具有可扩展性。缺点: 增加成本。分层式结构究竟其优势何在?1、开发人员可以只关注整个结构中的其中某一层;2、可以很容易的用新的实现来替换原有层次的实现;3、可以降低层与层之间的依赖;4、有利于标准化;5、利于各层逻辑的复用。 阅读全文

posted @ 2014-03-14 15:23 riky1989 阅读(162) 评论(0) 推荐(0)

值类型和引用类型的区别

摘要: 值类型和引用类型的区别(结构和类)1. 值类型分配在内存栈上,引用类型分配在托管堆上。当一个值类型的变量赋给另一个值类型的变量时,会执行一次逐字段的复制,而一个引用类型的变量赋给另一个引用类型的变量时,仅仅会复制对象的内存地址。2. 基于上一条,多个引用类型的变量可以同时指向同一个对象,对其中的任何一个变量执行操作都会影响到另一个变量引用的对象。而每个值类型的变量都已经包含了自己的对象,所以对值类型对象的操作不会影响到另一个值类型变量。3. 值类型包括结构和枚举,他们均间接或直接派生自System.ValueType类;引用类型包括类和接口,他们都派生自System.Object类(这一句是废 阅读全文

posted @ 2014-03-14 15:11 riky1989 阅读(225) 评论(0) 推荐(0)

[Asp.Net]状态管理

摘要: 状态类型客户端或服务器资源有效时间ViewState客户端只在一个页面中Cookie客户端关闭浏览器时会删除临时cookie(此时的cookie没有设置有效时间,存储在浏览器内存中,关闭浏览器cookie自动删除),永久存储在用户系统磁盘上。Session服务器回话状态与浏览器回话相关。回话在超时后无效(默认为20分钟)Application服务器应用程序状态在所有的客户端上共享,这个状态在服务器重启之前都是有效的Cache服务器类似于应用程序状态,高速缓存是共享的。但是,使高速缓存无效有更好的控制方式1.ViewState 一种视图状态,可以保存同一个页面的数据ViewState的缺点是。数 阅读全文

posted @ 2014-03-14 15:09 riky1989 阅读(140) 评论(0) 推荐(0)

const和readonly

摘要: static readonly int A = 2 * B; static readonly int B = 4; static void Main(string[] args) { Console.WriteLine("A={0},B={1}", A, B); Console.Read(); }A=0 B=4 const int A = 2 * B; const int B = 4; static void Main(... 阅读全文

posted @ 2014-03-14 14:12 riky1989 阅读(125) 评论(0) 推荐(0)

导航