摘要: 上一篇文 章中简单讲了.NET中值类型和引用类型的区别,并分析了引用类型的内存布局和实现方式,并在开始的例子中简单分析了值类型相较于引用类型的若干优点。在 平常的开发中,很多人一上来就用class,而很少去想到底该用class还是struct。本文详细介绍.NET中的值类型以及在使用中应该注意的问 题。在某些情况下,使用值类型较引用类型可以显著减少内存占用和GC压力,提高程序的执行效率。本文参考《Pro .NET Performance》 《CLR Via C#》和 《Advanced .NET Debugging》,希望对您有帮助。值类型内部实现 和引用类型相比,值类型具有相对简单的内存布局 阅读全文
posted @ 2013-11-05 18:17 zzunstu 阅读(246) 评论(0) 推荐(0) 编辑
摘要: .NET中的类型分为值类型和引用类型,他们在内存布局,分配,相等性,赋值,存储以及一些其他的特性上有很多不同,这些不同将会直接影响到我们应用程序 的效率。本文视图对.NET 基础类型中的值类型和引用类型在内存中的布局,方法的调用,值类型如何实现接口,以及其他一些细节问题进行一些简要的讨论,文章主要参考《Pro .NET Performance》 和 《Advanced .NET Debugging》 ,希望给大家一点儿帮助。一 简单例子 举一个简单的例子,我们有一个名为Point2D的对象,用来表示二维空间中的坐标,每一个坐标值x,y都用一个short类型表示,整个对象占4个字 节。现在假设我 阅读全文
posted @ 2013-11-05 18:13 zzunstu 阅读(220) 评论(0) 推荐(0) 编辑
摘要: 阅读目录前言线程堆栈的分配托管堆上对象的分配结束语前言 .Net中的运行时,以及各个类型、对象、线程堆栈以及托管堆之间的关系,在初学者(俺是初学者中的菜鸟 J)看来,有很多是难以理解的东西,俺在看了CLR Via C# 的前几章后,现在将文中的大概意思并加以自己的理解,重现运行时,以及各个关系。希望各位尽量拍砖,多多指出不正确的地方,共同进步。线程堆栈的分配 图1中展示了CLR加载的一个Microsoft Windows进程。在一个进程中,可能会存在多个线程。在创建一个线程时,这个线程会分配到一个1MB大小的堆栈。这个堆栈空间的作用:用于向方法传递 实参,并用于存储在方法内部定义的局部变量.. 阅读全文
posted @ 2013-11-05 17:23 zzunstu 阅读(274) 评论(0) 推荐(0) 编辑
摘要: 7Bw技术类面试、笔试题汇总注:标明*的问题属于选择性掌握的内容,能掌握更好,没掌握也没关系。下面的参考解答只是帮助大家理解,不用背,面试题、笔试题千变万化,不要梦想着把题覆盖了,下面的题是供大家查漏补缺用的,真正的把这些题搞懂了,才能“以不变应万变”。回答问题的时候能联系做过项目的例子是最好的,有的问题后面我已经补充联系到项目中的对应的案例了。1、简述private、protected、public、internal修饰符的访问权限。private:私有成员,在类的内部才可以访问,也就是类内部的函数等成员可以访问。protected:保护成员,该类内部和继承类中可以访问。public:公共成 阅读全文
posted @ 2013-11-05 15:06 zzunstu 阅读(1579) 评论(2) 推荐(0) 编辑
摘要: 注意事项:用蓝、黑色钢笔答题。保持卷面整洁。得分阅卷人一、单项选择(40分,每小题1分)1.以下标识符中不全是关键字的是()A、caseforintB、whilegotoforeachC、boolclasslongD、thenifchar2.一个C#程序总是调用哪个方法作为开始(入口):()A、MainB、mainC、MAIND、任意一个方法即可3.设“inta=12;”,则执行完语句“a+=a*a;”后,a的值是()A、12B、144C、156D、2884.在类作用域中能够通过直接使用该类的()成员名进行访问。A、私有B、公有C、保护D、任何5.decimal类型和float(double) 阅读全文
posted @ 2013-11-05 15:05 zzunstu 阅读(556) 评论(0) 推荐(0) 编辑
摘要: C#引用类型和值类型的区别——值类型和引用类型在内存中的部署经常听说,并且经常在书上看到:值类型部署在栈上,引用类型部署在托管堆上。实际上并没有这么简单。MSDN上说:托管堆上部署了所有引用类型。这很容易理解。当创建一个应用类型变量时:objectreference=newobject();关键字new将在托管堆上分配内存空间,并返回一个该内存空间的地址。左边的reference位于栈上,是一个引用,存储着一个内存地址;而这个 地址指向的内存(位于托管堆)里存储着其内容(一个System.Object的实例)。下面为了方便,简称引用类型部署在托管推上。再来看值类型。《C#语言规范》上的措辞是“ 阅读全文
posted @ 2013-11-05 14:20 zzunstu 阅读(206) 评论(0) 推荐(0) 编辑
摘要: 在实际的开发过程中,对字符串的操作是经常遇到的,其中涉及到字符串拼接、拆分、比较、替换等操作。C#提供了string类型,String和 StringBuilder两种类来对字符串进行处理。那么string,String,StringBuilder对字符串进行处理有何异同,在实际编 程中,对于不同的字符串操作应该采用哪种方式来提高程序的效率呢?本文将对string,String,StringBuilder进行详细的解释和比 较,最后在编程过程中遇到的常用的字符串处理进行了总结。 首先理解string,String,StringBuilder的概念和区别: string string,ms... 阅读全文
posted @ 2013-11-05 11:52 zzunstu 阅读(559) 评论(0) 推荐(1) 编辑