上一页 1 ··· 6 7 8 9 10 11 下一页
摘要: 1. 委托的定义个人理解为将某类方法(方法签名相同,不论是私有方法,公有方法还是静态方法,实例方法)进地类型化的途径。可以类比于其他的类型例如:System.Int是对整数这一类具有共同特征的数据的一个类型化。2. 委托的作用通过委托,可以将某个方法作为参数进行传递。并且能够通过委托对传递的方法以进行签名检查。3. C#中定义委托C#中采用如下方式定义委托:public delegate ReturnType MethodName(Parameters(Type&Name))例如. public delegate void EventHandler(object sender,Even 阅读全文
posted @ 2012-07-25 23:20 self.refactoring 阅读(322) 评论(0) 推荐(0)
摘要: 可能在写程序的时候不会去在意问题, 因为遇到哪个变量没初始化就去使用的话,会出现编译不通过的情况。然后很自然的修改一下代码加上初始化的逻辑,这个问题就算解决了。所以一直没有在意这个问题。今天进行总结如下:如果是变量属于类成员,则变量是会有默认值的(如果没有显示的赋值)。1.引用类型默认值为null2.int等数值类型为0.这个赋值过程我个人理解是.NET Runtime在初始化一个类或实例的过程中做的。(有待验证)如果变量属于局部变量(如:在某个方法里面定义的),则如果不显示的赋值去使用的话,则会报编译错误。 阅读全文
posted @ 2012-07-14 10:49 self.refactoring 阅读(1489) 评论(0) 推荐(0)
摘要: 其实在一个进程中真正做事情是线程,因此每个进程至少有一个线程。(其实操作系统会为每个进程自动创建一个主线程,这个主线程的执行函数但是我们的Main函数)操作系统创建线程的时候和创建进程的行为差不多:1.创建一个线程内核对象,这个内核对象为记录关于线程的一些基本信息。2.为线程在进程的地址空间中分配一个栈用来保存在线程中所产生的资源。线程的创建创建线程的时候可以设置如下信息:1. 线程栈的大小(一般默认是1MB)2. 线程执行函数的地址3. 线程启动参数线程创建成功能,操作系统会为线程配一个唯一标示的线程ID。线程的终止1. 正常的线程终止当线程的执行函数正常返回后,线程也就算完成了他的使命。. 阅读全文
posted @ 2012-06-23 12:37 self.refactoring 阅读(432) 评论(0) 推荐(1)
摘要: 1. 什么是内核对象内核对象是操作系统为一些系统级的对象(像进程,线程,信号量)维护的一些数据结构。这些数据构保存了与系统级对象相关的系统级信息。例如:所有内核对象都会保存该对象的引用计数。进程对象会保存进程ID。文件对象会保存当前字节偏移量,共享模式,打开模式等。操作系统中所有内核对象对是保存在一块内存空间中,系统上所有的进程都共享这一块内存空间。2.内核对象的访问方式这些内核对象不能被应用程序直接访问,应用程序只能通过操作系统提供的API对他们进行操作。而对操作系统API的访问过程中,操作系统会对访问的安全性进行保证。这样避免应用程序对内核对象进行操作而导致系统出现错误。多个进程可以共享. 阅读全文
posted @ 2012-06-10 11:23 self.refactoring 阅读(4619) 评论(0) 推荐(1)
摘要: 已经做了几年的软件开发了,对于什么是进程,却没有一个系统的认识。只知道双击一个exe文件,任务管理器中就会多出一个进程。然后知道每个进程会有一个地址空间,在进程中的内存访问其实都是相对于该地址空间的地址表示。其实也算是知道个大概了,只是没有系统的总结出来而已,通过阅读《Windows核心编程》,重新对进程有了一个系统的认识。进程是程序的一个实例,它由以下两部分构成:1. 一个内核对象,操作系统通过他来管理进程。内核对象也是系统保存进程统计信息的地方。(其实还不是很清楚具体会有哪些统计信息,难道是任务管理器里显示的那些信息?有待进一步研究)2. 一个地址空间(通俗点讲应该就是为进程在内存条上分. 阅读全文
posted @ 2012-06-01 00:04 self.refactoring 阅读(328) 评论(0) 推荐(0)
摘要: 在使用C#这种语言的时候,有时候实现一个功能有很多的方法。在写代码的时候有时候根本不会仔细考虑该去用哪一种方法,根据自己的习惯去使用其中一种方法。甚至有时根本不用去思考为什么这个方法可以,纯粹根据经验来写程序。这就是C#,门槛比较低,很多基础东西不需要了解照样可以开发软件,做网站。过去我也是这样,但是突然间感觉到:作为一个工程师,应该有严谨的逻辑思维,在选择一件方法去实现某个功能的时候应该需要有强有力的理由证明选择这个方法是对的。如果在做一件事情的时候连为什么要这么做都说不清楚,那又怎么判断自己做的是对的呢?因此我要时刻提醒自己:在写程序的时候,要经常问自己为什么要这样来写.不要让自己的经验蒙 阅读全文
posted @ 2011-07-24 14:32 self.refactoring 阅读(257) 评论(0) 推荐(0)
摘要: Wpf的DataBinding为我们将View与logic的分离提供了便利。特别是利用MVP模式,可以将大部分的UI交互逻辑通过绑定Command来转移到Presenter中来,使我们可以专注于操作业务数据。但是微软提供的控件中好像还有很多的控件根本没有Command属性,只有普通的Event。这样的话就没有办法利用绑定将逻辑转移到Presenter中。看到xaml.cs(每一个xaml文件的codebehind文件)文件还是有很多的事件处理代码感觉非常不爽,于是想了个办法来将Event的处理转换成执行Command,这样就可以在Presenter里来处理EventHandler的逻辑了。xa 阅读全文
posted @ 2010-12-05 22:13 self.refactoring 阅读(3719) 评论(0) 推荐(2)
摘要: 这两天被asp.net的验证控件给弄得焦头烂额。并不是asp.net的验证控件本身有什么问题,而是我的用法导致了一个被隐藏的验证。问题如下:在一个页面中有DIV a和DIV b:div a有如下asp.net控件:TextBox,RequireFieldValidator(验证TextBox),Buttondiv b有如下asp.net控件:TextBox,RequireFieldValidato... 阅读全文
posted @ 2010-01-14 22:13 self.refactoring 阅读(1934) 评论(1) 推荐(0)
摘要: 1.定义Keyboard Focus可以理解为物理焦点。就是整个桌面上可以响应键盘输入的地方,整个桌面在某个时刻只可能有一个地方能接受键盘的输入,因此整个桌面在某个时刻只可能有一个Keyboard Focus.Logic Focus从字面上理解是逻辑焦点。一般带“逻辑”字眼的东西都有可能是“虚”的,在这里也不例外。Logic Focus并不是真正的焦... 阅读全文
posted @ 2009-12-06 15:15 self.refactoring 阅读(1188) 评论(0) 推荐(0)
摘要: 当采用默认构造函数List<int> value = new List<int>();实例化一个List<T>对象时,.Net Framework只是在内存中申请了一块内存来存放List<T>对象本身(不包含List当中的Items元素)。当为List<T>对象添加第一个Item元素时,List<T>对象会申请能存储4个Item元素的内存空间,然后将Item元素存放在申请的空间里。List<T>对象有一个Capacity属性用来表示当前List<T>对象的容量(即当前用于存放Item的内存空间能存放 阅读全文
posted @ 2009-12-06 15:11 self.refactoring 阅读(2030) 评论(0) 推荐(0)
上一页 1 ··· 6 7 8 9 10 11 下一页