壮志凌云,脚踏实地。
改变,坚持。
摘要: 委托是一个类,将方法封装成委托类型的对象。委托对象里包含三个部分的东西:1、指向方法的指针,标识要回调的方法。2、指向方法所指向的对象的指针,默认为null,当封装静态方法时,指针为null;当封装对象的方法时,指针指向当前调用方法的对象。3、构建委托链表时对委托对象的索引。上面第一个定义的委托F()等价与类F;而下面的定义的委托FS()等价与类FS。当用委托F分别调用类A、B、C的方法fA(),fB(),fC()时,分别将三个方法封装成三个委托类型FS的委托对象;同理,当用委托FS分别调用类A、B、C中的静态方法fSA()、fSB()、fSC()时,分别将前面三个方法封装成委托类型FS的对象 阅读全文
posted @ 2011-09-20 14:27 woxf 阅读(856) 评论(2) 推荐(1) 编辑
摘要: 接口调用方法详解基础知识接口定义:接口是一组已命名的方法签名。所以接口里可以定义方法、属性、事件,因为这些本质上都是方法。但是,接口不能定义任何的构造函数。接口的可访问性:类本身的修饰符可以为public,internal等(VS2008里试过)。但是显示实现接口方法时,接口成员却不允许添加任何修饰符(VS2008里试过)。接口的继承与调用隐式实现接口方法:例子:定义个类Base,该类实现了IDisposable// This class is derived from Object and it implements IDisposableinternal class Base : IDis 阅读全文
posted @ 2011-09-18 19:38 woxf 阅读(36661) 评论(1) 推荐(2) 编辑
摘要: out与ref用于值类型的方法参数时:out与ref基本上是一样的,是对变量的指针里面的内容进行操作。唯一的区别:out不要求变量初始化,而用ref关键字时,变量必须初始化;但是out参数返回时必须为对象赋值。out与ref用于引用类型的参数时:当out与ref用于引用对象时,方法“返回”的必须是已知对象的引用。ref不能用于一个没有明确指向的引用对象,比如object a;此时就不能用ref,即使要用也必须object a = null;而out参数作用于引用对象时,其所在的方法必须对引用对象初始化。因为out和ref作用域引用类型时,都是对引用类型的引用(指针)进行操作,所以它的引用类型的 阅读全文
posted @ 2011-09-16 16:32 woxf 阅读(3374) 评论(0) 推荐(0) 编辑
摘要: 一、const 与 readonly 以及static readonly的区别。const:const是常量;readonly是实例只读变量;static readonly是静态只读变量区别可以从以下几个方面分析:1、内存分配const是常量,C#编译器编译源代码时,会将const常量直接编译成IL代码,因此,它不存在分配内存的问题。readonly 修饰只读实例字段时,只能在调用构造函数时才能对它进行初始化,而调用构造函数对它初始化,必然涉及到内存分配问题。readonly只能在对象除此创建时写入数值,除非用反射来修改readonly字段。当readonly前面加static关键字变成sta 阅读全文
posted @ 2011-09-16 09:27 woxf 阅读(1243) 评论(0) 推荐(1) 编辑
摘要: 今天到某公司笔试,数据库考的比较多,但是说老实话,考的也比较基础。现在趁回忆得起来,将数据库知识简单整理如下: Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE MicrosoftInternetExplorer4 ... 阅读全文
posted @ 2011-09-15 21:10 woxf 阅读(31043) 评论(0) 推荐(3) 编辑
摘要: Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE ... 阅读全文
posted @ 2011-09-12 10:02 woxf 阅读(3981) 评论(0) 推荐(0) 编辑
摘要: Chapter 4线程、对称多处理和微内核一、线程间的状态切换比进程间的状态切换开销更低的原因?(从资源分配角度来分析)从下面这幅图可以看出左边为单线程进程模型,右边为多线程进程模型。从上图可以看出,多线程虽然有自己的线程控制块、用户栈和内核栈,但是他们是共享同一个进程中用户地址空间的,线程切换不需要重新分配资源;相反,进程间由于不共享用户地址空间,进程切换时需要重新分配资源,操作系统使其环境产生实质性的变化。(核心问题是资源分配问题)二、在进程概念中体现出来的两个独立且无关的特点是什么?资源所有权和调度/执行。资源所有权:一个进程包括一个进程影像的虚拟地址空间,一个进程总是拥有对资源的控制或 阅读全文
posted @ 2011-09-08 22:23 woxf 阅读(1696) 评论(0) 推荐(0) 编辑
摘要: Chapter3 进程描述和控制一、 通常哪些事件会导致创建一个进程?1、 新作业的进入2、 父进程由于某种原因开启一个派生进程3、 一个新的服务的启动,操作系统因提供一项服务而创建。4、 交互登陆,终端用户登陆到系统。二、抢占一个进程是什么意思?抢占就是优先级高的进程去抢占优先级低的且正在执行的进程的资源,导致优先级低的正在运行态的进程被迫阻塞(终端)。通俗的讲就是一个进程正处在运行态执行,此时一个比他优先级高的进程启动,正处于运行态的进程被阻塞,优先级高的进程执行。比如:B进程正在运行,而另一个具有更高优先级的A进程处于阻塞态,当处于阻塞态的进程A由于某个事件的触发而转换为就绪态,由于A优 阅读全文
posted @ 2011-09-07 08:09 woxf 阅读(1780) 评论(0) 推荐(1) 编辑
摘要: 原文出处:http://www.c-sharpcorner.com/UploadFile/rmcochran/csharp_memory01122006130034PM/csharp_memory.aspx尽管在.NET framework下我们并不需要担心内存管理和垃圾回收(GarbageCollection),但是我们还是应该了解它们,以优化我们的应用程序。同时,还需要具备一些基础的内存管理工作机制的知识,这样能够有助于解释我们日常程序编写中的变量的行为。在本文中我将讲解栈和堆的基本知识,变量类型以及为什么一些变量能够按照它们自己的方式工作。在.NET framework环境下,当我们的代 阅读全文
posted @ 2011-09-06 17:13 woxf 阅读(229) 评论(0) 推荐(0) 编辑
摘要: 引言 本篇文章主要介绍.NET中6个重要的概念:栈,堆,值类型,引用类型,装箱,拆箱。文章开始介绍当你声明一个变量时,编译器内部发生了什么,然后介绍两个重要的概念:栈和堆;最后介绍值类型和引用类型,并说明一些有关它们的重要原理。 最后通过一个简单的示例代码说明装箱拆箱带来的性能损耗。声明变量的内部机制 在.NET程序中,当你声明一个变量,将在内存中分配一块内存。这块内存分为三部分:1,变量名;2,变量类型;3,变量值。 下图揭示了声明一个变量时的内部机制,其中分配的内存类型依据你的变量类型。.NET中有两种类型的内存:栈内存和堆内存。在接下来的内容中,我们会了解到这两种类型的详细内容。... 阅读全文
posted @ 2011-09-06 17:05 woxf 阅读(200) 评论(0) 推荐(0) 编辑