博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2011年3月28日

摘要: GDI+由.NET基类集组成,这些基类可用于在屏幕上完成定制绘图,能把合适的指令发送到图形设备的驱动程序上,确保在监视器屏幕上显示正确的输出(或打印到硬拷贝中)。一、理解绘图规则1、 GDI和GDI+一般来说,Windows的一个优点(实际上是现代操作系统的一个优点)是它可以让开发人员不考虑特定设备的细节,例如:不需要理解硬盘设备驱动程序,只需在相关的.NET类中调用合适的方法(以前是等价的Windows API 函数),就可以编程读写磁盘上的文件。这些规则也适用于绘图,计算机在屏幕绘图时,把指令发送给视频卡,问题是市面上有几百种不同的视频卡,大多数有不同的指令集和功能,如果把这个考虑在内,在 阅读全文

posted @ 2011-03-28 21:31 steve.z 阅读(378) 评论(0) 推荐(0) 编辑

摘要: 软件设计中通常用耦合度和内聚度作为衡量模块独立程度的标准。划分摸块的一个准则就是高内聚低耦合。 耦合度(Coupling)是对模块间关联程度的度量。耦合的强弱取决与模块间接口的复杂性、调用模块的方式以及通过界面传送数据的多少。 模块间的耦合度是指模块之间的依赖关系,包括控制关系、调用关系、数据传递关系。模块间联系越多,其耦合性越强,同时表明其独立性越差。 降低模块间的耦合度能减少模块间的影响,防... 阅读全文

posted @ 2011-03-28 20:33 steve.z 阅读(2009) 评论(0) 推荐(0) 编辑

摘要: 实际上还是父类分配父类的内存空间,子类分配子类的内存空间。[子类只分配自己特有的成员的内存,其他的使用父类的],最终合并到了一起,这里只是这么理解。通过this.age和base.age使用同一个内存地址也可以看出,这种理论也可以解释为什么构造函数不能被继承,只能子类来调用父类的构造函数。因为父类构造函数是要用来为父类分配内存空间,子类“调用”而非“继承”父类构造函数。然后在调用自己的构造函数。 如果子类重写父类的方法时,通过虚方法表来寻找子类的实现。在实例化子类对象时,是先构造父类的内存块,然后再构造子类的(子类相对于父类扩展了的那些)。编译器的调用过程是先调用基类的构造函数,对派生类中的基 阅读全文

posted @ 2011-03-28 14:16 steve.z 阅读(360) 评论(0) 推荐(0) 编辑

摘要: “类型安全” “静态类型安全”,在编译时检查类型是否一致。 “动态类型安全”,.net4.0里的dynamic类型,在运行时,会提前获得dynamic类型实际的类型。(异常不知道算不算?) string[] s = new string[10]; for (int i = 0; i < 100; i++) { Console.WriteLine(s[i]); } 对任何引用的对象进行操作,CLR都知道此对象是何种类型的; CLR在对一个引用对象进行操作时,它先会检查此引用的类型, 查看本次操作是否有效;若无效,编译将不能通过。 从另一个方面来说, “C#是类型安全的”指的是: CLR在程 阅读全文

posted @ 2011-03-28 11:24 steve.z 阅读(1255) 评论(0) 推荐(0) 编辑

摘要: 本着代码重用,减少变量的创建,希望参数能够重复使用.错误如下:另一个 SqlParameterCollection 中已包含 SqlParameter。错误详细信息:System.ArgumentException: 另一个 SqlParameterCollection 中已包含 SqlParameter。具体原因:声明的SqlParameter数组,而在循环的内部,每一次执行ExecuteNonQuery都由该方法内部的IDbCommand.Parameters.Add(IDbDataParameter)将SqlParameter数组添加到IDbCommand的IDataParameterC 阅读全文

posted @ 2011-03-28 09:11 steve.z 阅读(1031) 评论(0) 推荐(1) 编辑