记录点滴收获,汇聚知识乐园

脚步无法到达的地方,目光可以到达;目光无法到达的地方,梦想可以到达

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

11 2011 档案

序列化(转)
摘要:序列化又称串行化,是.NET运行时环境用来支持用户定义类型的流化的机制。其目的是以某种存储形成使自定义对象持久化,或者将这种对象从一个地方传输到另一个地方。.NET框架提供了两种串行化的方式:1、是使用BinaryFormatter进行串行化;2、使用SoapFormatter进行串行化;3、使用XmlSerializer进行串行化。第一种方式提供了一个简单的二进制数据流以及某些附加的类型信息,而第二种将数据流格式化为XML存储;第三种其实和第二种差不多也是XML的格式存储,只不过比第二种的XML格式要简化很多(去掉了SOAP特有的额外信息)。可以使用[Serializable]属性将类标志为 阅读全文

posted @ 2011-11-20 20:06 guowenhui 阅读(158) 评论(0) 推荐(1) 编辑

委托、事件(从委托到事件)
摘要:首先我们谈谈委托,委托是一种类型安全的函数指针,它支持更加灵活的晚绑定机制,是.NET中事件的支持机制。但是委托不仅仅限于函数指针,如果所绑定的方法为实例方法,委托将可以维护其所依赖的对象的状态信息。在整个.NET机制里面,共有三大晚绑定机制:虚函数、委托、反射。所谓晚绑定,即一个晚的东西调用一个早的东西。晚绑定的设计理念很重要,很多关键的设计理念都是由晚绑定来支持的。如果没有晚绑定,只有早绑定,设计上做不出来什么好的东西,很多经典的设计模式都是以晚绑定为基础的。下面先了解一些委托对象的内存模型: 从本质上讲,委托是一个类,因此它就是一个引用类型,也因此它符合引用类型的内存结构模型,首先是在栈 阅读全文

posted @ 2011-11-18 02:33 guowenhui 阅读(535) 评论(1) 推荐(2) 编辑

C# 中的弱引用
摘要:通常情况下,一个对象实例如果被其它实例引用了,垃圾收集器就不会收集它,此时就认为应用程序对该对象具有强引用(通常所说的引用就是强引用),弱引用允许应用程序访问对象,同时也允许垃圾收集器收集它。如果不存在强引用,则弱引用的有限期只限于收集对象前得一个不确定的时间,当使用弱引用时,应用程序仍可以对该对象进行强引用,这样做的优点是可以防止该对象被收集,但存在一定的风险,即在强引用从新建立之前该对就已经被收集了。弱引用适合这一类对象:占用大量的内存,但通过垃圾回收功能进行回收以后则很容易从新被创建。using System;class Test{ static void Main() ... 阅读全文

posted @ 2011-11-10 18:52 guowenhui 阅读(269) 评论(0) 推荐(1) 编辑

线程优先级和线程同步
摘要:线程优先级线程优先级的概念在很多技术框架下都有应用,.Net框架也不例外,.NET框架为程序员提供了方便的接口以供使用。系统会为每一个线程分配一个优先级别。.NET线程优先级,是指定一个线程的相对于其他线程的相对优先级,它规定了线程的执行顺序,对于在CLR中创建的线程,其优先级别默认为Normal,而在CLR之外创建的线程进入CLR时,将会保留其先前的优先级,可以通过访问线程的Priority属性来获取或设置线程的优先级别。 System.Threading命名空间中的ThreadPriority枚举定义了一组线程优先级的所有可能值,我这里按级别由高到低排列出来,具体的说明就不在这里解释。.. 阅读全文

posted @ 2011-11-08 18:55 guowenhui 阅读(2014) 评论(0) 推荐(1) 编辑

多线程进阶
摘要:进程当一个程序开始运行时,它就是一个进程,进程包括运行中的程序和程序所使用到的内存和系统资源。而一个进程又是由多个线程所组成的。线程线程是程序中的一个执行流,每个线程都有自己的专有寄存器(栈指针、程序计数器等),但代码区是共享的,即不同的线程可以执行同样的函数。多线程?多线程是指程序中包含多个执行流,即在一个程序中可以同时运行多个不同的线程来执行不同的任务,也就是说允许单个程序创建多个并行执行的线程来完成各自的任务。多线程的好处:可以提高CPU的利用率。在多线程程序中,一个线程必须等待的时候,CPU可以运行其它的线程而不是等待,这样就大大提高了程序的效率。多线程的不利方面:线程也是程序,所以线 阅读全文

posted @ 2011-11-07 01:55 guowenhui 阅读(286) 评论(0) 推荐(1) 编辑

接口
摘要:接口的标准化是一个产业强盛的标志。在C#中,面向接口的编程思想是.NET中重要的思想之一,接口是组建设计的灵魂,接口是一种引用类型,在.NET类型系统中,类和结构都可以实现接口,一个类可以实现多个接口,接口之间也可以实现多继承,即 一个接口可以有多个父接口。接口不是实体类型,不可以实例化,只是类型的行为合同规范。接口是面向组件设计与开发的灵魂。是现代软件开发的一个重要的设计手段。其实编程领域的很多思想都是从传统行业借鉴而来的,接口亦是如此。 首先我们来认识一下接口,public interface IPrint{ void Print(); void Process(); ... 阅读全文

posted @ 2011-11-06 02:22 guowenhui 阅读(321) 评论(0) 推荐(1) 编辑

C# 常用的对象操作
摘要:1.对象的类型判断 任何一个对象它都具有双重类型的身份,即声明类型和实际类型,正因为对象有了双重的类型身份,因此也出现了类型兼容的概念。同时也因为对象的引用性质,也使它在判断相等的概念上具有多重意义(即存在引用相等和值相等)。 首先我们来看类型兼容,看一段代码:using System;class Fruit{}class Apple:Fruit{}class Test{ public static void Main() { Fruit f1=new Fruit(); Fruit f2=new Apple(); //类型通过虚函数表中GetType()函数获得 ... 阅读全文

posted @ 2011-11-04 22:37 guowenhui 阅读(1984) 评论(1) 推荐(1) 编辑

.dll和.exe文件及ildasm工具的使用
摘要:概论首先我们需要了解一下.NET的编译机制,在.NET框架下,编译分为两个步骤完成,第一阶段编译和JIT编译,第一阶段的编译对于.NET平台上的不同语言会使用不同的编译器,C#语言所使用的当然是C#编译器,第二阶段编译是由JIT编译器完成的,关于编译机制的详细解释,这里不再赘述。 在第一阶段编译过程中,任何语言都会被编译成中间语言(IL)代码,程序集(Assembly)的文件负责封装中间语言。在经过C#编译器的编译以后,一般会形成两种形式的文件,.dll文件和.exe文件,如果被编译的类文件(.cs文件)文件中包含入口点函数(即Mian函数),那么这个类文件既可以编译成.dll文件(动态链接. 阅读全文

posted @ 2011-11-04 03:15 guowenhui 阅读(962) 评论(0) 推荐(1) 编辑

构造器
摘要:构造器:构造器一般用来进行状态的初始化,包括实例构造器和类构造器两种。构造器不支持继承,构造器存储在代码段中(和常量的存储地方一样)。实例构造器 实例构造器主要负责将类型的实例初始化到一个合理的状态。引用类型和值类型的实例构造器是有所区别的。如果我们没有定义实例构造器,那么编译器会为我们默认产生一个无参构造器。在调用构造函数前,变量被初始化为0或者null,所以没有被构造器改变的变量在实例创建后将保持0值。如果类没有显示定义构造器,编译器会自动生成一个无参构造器,调用基类的无参构造器。如果类的修饰符为static,编译器不会默认生成构造器;如果存在继承关系,派生类在使用基类的字段之前应该先.. 阅读全文

posted @ 2011-11-03 23:28 guowenhui 阅读(896) 评论(1) 推荐(2) 编辑

结构与枚举
摘要:首先,结构和枚举是值类型,对于结构和枚举的理解,需要对内存模型有一个很好的认识,众所周知,所有的类型分为值类型和引用类型,那么到底是值类型效率好还是引用类型效率好,为什么内存结构演化到今天任何一门语言的内存都有堆和栈的存在了。 值类型中有三种数据类型,结构、枚举、简单数值类型,首先我们来看结构,结构类型是一个轻量级的数据类型,一般用于存储简单的数据对象。注意、轻量级不等同于性能就好,结构与类相比,在不同的情况下各自有各自的性能优势,不能一概而论。(结构类型在传参和拷贝的时候性能不如类)结构默认继承自System.ValueType,即默认为值类型,通过IL代码可以得知,编译的时候结构和类是不. 阅读全文

posted @ 2011-11-02 22:58 guowenhui 阅读(584) 评论(1) 推荐(3) 编辑

点击右上角即可分享
微信分享提示