摘要: (*) Document Outline The Document Outline window (opened from the View, Other Windows menu) exposes a hierarchical view of elements residing on a Windows form or web form. This window is a fantastic t... 阅读全文
posted @ 2009-10-26 22:21 MainTao 阅读(211) 评论(0) 推荐(0) 编辑
摘要: Solution (*) .sln and .suo .slnThe solution definition file is responsible for actually describing any project relationships in the solution and for storing the various solution-level attributes that ... 阅读全文
posted @ 2009-10-24 17:40 MainTao 阅读(409) 评论(0) 推荐(0) 编辑
摘要: Rule Description Automatic Correction Reference to a static variable should be synchronized using a thread lock. Static members are shared across object instances and threads and should be protected u... 阅读全文
posted @ 2009-03-30 23:51 MainTao 阅读(295) 评论(0) 推荐(0) 编辑
摘要: 因为C语言所有复杂的指针声明,都是由各种声明嵌套构成的。如何解读复杂指针声明呢?右左法则是一个既著名又常用的方法。不过,右左法则其实并不是C标准里面的内容,它是从C标准的声明规定中归纳出来的方法。C标准的声明规则,是用来解决如何创建声明的,而右左法则是用来解决如何辩识一个声明的,两者可以说是相反的。右左法则的英文原文是这样说的:Theright-leftrule:Startreadingthede... 阅读全文
posted @ 2009-03-24 19:32 MainTao 阅读(906) 评论(0) 推荐(0) 编辑
摘要: 特性,就是为目标元素,可以是数据集、模块、类、属性、方法、甚至函数参数等加入附加信息,类似于注释,但是可以在运行期以反射的方式获得。定制特性主要应用在序列化、编译器指令、设计模式等方面。多个特性可以应用于同一元素,特性间以逗号隔开,以下表达规则有效:[AttributeUsage][ Flags]、[AttributeUsage, Flags]、[Flags, AttibuteUsageAttri... 阅读全文
posted @ 2009-03-24 08:57 MainTao 阅读(9383) 评论(0) 推荐(4) 编辑
摘要: “接口不变”,是应该考虑的重要因素。所以,在由接口增加扩展时,应该增加新的接口,而不能更改现有接口。尽量将接口设计成功能单一的功能块,以.NET Framework为例,IDisposable、IDisposable、IComparable、IEquatable、IEnumerable等都只包含一个公共方法。抽象类是提取具体类的公因式,而接口是为了将一些不相关的类̶... 阅读全文
posted @ 2009-03-23 22:42 MainTao 阅读(315) 评论(0) 推荐(0) 编辑
摘要: (*) where用来限制泛型的类型。where T : struct 可简单理解为只允许值类型(其实是其继承链中必须有值类型)where T : class 可简单理解为只允许引用类型(其实是其继承链中必须有引用类型)where T : new() 所有值类型OK,如果是引用类型则必须支持用无参构造函数实例化。(有多个where约束时,new()必须在末尾)where T : 类名 必须是某个类... 阅读全文
posted @ 2009-03-23 11:45 MainTao 阅读(391) 评论(0) 推荐(0) 编辑
摘要: (*) 委托从最简单的例子开始:[代码]上面是静态方法的委托,下面再来看一个实例方法的委托。[代码](*) 事件委托是个类型,而事件是个成员。看下面的代码:[代码](*) 匿名方法匿名方法的作用是使代码更简化,方便了程序员。如果没有匿名方法,则定义一套事件监听需要这样:[代码]上面的代码比较啰嗦,尤其是为委托和它所调用的方法起名字比较费劲我觉得。有了匿名方法以后,仅需要这样:[代码]与上一段代码相... 阅读全文
posted @ 2009-03-19 22:54 MainTao 阅读(5324) 评论(0) 推荐(1) 编辑
摘要: (*) 接口也可以继承接口,但子接口不提供父接口方法的实现(*) 当一个类同时继承父类又实现接口,要把接口放在最后面,如class xxx: ParentClass, ISomeInterface(*) 当同时实现的多个接口中出现同名方法除了解决同名方法冲突,此段代码同时展示了3种使用接口的方式:[代码](*) 自动生成代码实现接口的类要写不少代码,而且还经常会碰到上面说的语法问题,所以VS提供了... 阅读全文
posted @ 2009-03-17 21:53 MainTao 阅读(2426) 评论(2) 推荐(1) 编辑
摘要: 默认情况下,GC自动回收的资源只有托管堆上的内存,其他资源如数据库连接、流等等都不在GC的管理范围之内,这些资源统称为非托管资源。 当不使用托管资源的时候,默认的析构函数就可以搞定一切。只有在需要手工释放非托管资源的时候才应该(不是必须)重写析构函数。 有一点和C++不一样的地方,在C#里只有类才在托管堆上分配内存,也只有类才有析构函数,struct是不能有析构函数的。所以尽量不要在struct里... 阅读全文
posted @ 2009-03-16 22:49 MainTao 阅读(5013) 评论(0) 推荐(0) 编辑