提高C#编程水平的50个要点

上传人:碎****木 文档编号:220862900 上传时间:2021-12-09 格式:DOCX 页数:10 大小:21.81KB
返回 下载 相关 举报
提高C#编程水平的50个要点_第1页
第1页 / 共10页
提高C#编程水平的50个要点_第2页
第2页 / 共10页
提高C#编程水平的50个要点_第3页
第3页 / 共10页
亲,该文档总共10页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《提高C#编程水平的50个要点》由会员分享,可在线阅读,更多相关《提高C#编程水平的50个要点(10页珍藏版)》请在金锄头文库上搜索。

1、提高C#编程水平的 50 个要点1. 总是用属性 (Property) 来代替可访问的数据成员2. 在readonly 和 const 之间,优先使用 readonly 3.在 as 和 强制类型转换之间,优先使用 as 操作符4.使用条件属性 (Conditional Attributes) 来代替条件编译语句 #if 5.总是为自定义类重载 ToString 方法6. 区分值类型和引用类型7. 使用不行变的值类型(Immutable Atomic Value Types) 8.在值类型中,确保 0 是一个合法的数据9. 理解 ReferenceEquals, static Equals,

2、instance Equals 和比较运算符(=)之间的关系10. 理解 GetHashCode 方法的缺陷11.在编写循环时,优先使用 foreach. 12.在定义变量的时候就将其初始化13. 使用静态构造函数来初始化静态成员变量14. 用多个构造函数时,利用构造函数链15. 使用 using 和 try/finally 来处理资源的释放16. 尽量避开产生资源垃圾17. 尽量避开使用装箱(boxing)和拆箱(unboxing) 18.实现类的 Dispose 方法19.在接口和继承(Inheritance)之间,优先使用接口(interface) 20.区分接口和重载(override

3、s)21. 用托付(delegate)来实现回调(callback)22. 用大事(event)来定义外部接口23. 避开返回类内部成员的引用24. 使用元数据来把握程序25. 优先使用可序列化(serilizable)类型26. 对需要排序的对象实现 IComparable 和 IComparer 接口27. 避开使用 ICloneable 接口28.避开使用类型转换操作符29. 只有当基类参加了与派生类中现有的函数名称一样的函数时,才需要使用 new 操作符30. 尽量使用 CLS-Compliant 31.尽量编写缺少,简洁的函数32.尽量编写比较小的程序集(assembly) 33.限

4、定类型的可见性(visibility) 34.编写大粒度的 web API35. 在使用大事时,优先继承基类大事,而不是重新创立一个大事36. 多使用 framework 的运行时调试 (DEBUG, TRACE, EVENTLOG等)37. 使用.net 标准的配置机制38. 使用并且在类中支持.net 的数据绑定功能 (Data Binding) 39.使用.net 的验证机制 (Validation)40.依据你的需求选择正确的集合类(Collection) 41.在自定义构造中使用 DataSet42. 利用属性(Attributes)43. 不要过度使用反射(Reflection)

5、44.创立完整的,应用程序特定的特别45.尽可能多的考虑程序可能消灭的特别,并作出处理46.尽可能少的使用 Interop47.尽量使用平安代码 (safe code) 48.多多学习、使用外部工具和资源49. 预备使用 C# 2.050. 学习 ECMA 标准DataSet 是用来做连接 sql 的一种方法,意思是把数据库的副本存在应用程序里,应用程序开头运行时,把数据库相关数据保存到DataSet.DataTable 表示内存中数据的一个表.常和 DefaultView 使用猎取可能包括筛选视图或游标位置的表的自定义视图。DataReader 对象是用来读取数据库的最简洁方式,它只能读取,

6、不能写入,并且是从头至尾往下读的,无法只读某条数据,但它占用内存小,速度快DataAdapter 对象是用来读取数据库.可读取写入数据,某条数据超着强,但它占用内存比dataReader 大,速度慢dataset 表示一个数据集,是数据在内存中的缓存。 可以包括多个表DatSet 连接数据库时是非面对连接的。把表全部读到 Sql 中的缓冲池,并断开于数据库的连接datareader 连接数据库时是面对连接的。读表时,只能向前读取,读完数据后有用户打算是否断开连接。分布式系统的数据可能会用dataset 做数据载体,由于 dataset 是保存数据的数据构造,而 DataReader 不担当保存

7、数据的责任,它只负责从数据源读取数据到本地而已,它不是数据构造,而是网络通讯组件的高层封装。DataAdapter 也只是使用DataReader 从数据源读取数据并Add 到dataset 保存起来而已。假设我们单独使用DataReader 也可以把数据写入到业务类或者 dataset 里。那只是依据业务需要而选择不同的数据载体而已。实际上我们从数据库获得数据都会通过DataReader,只不过DataAdapter 把这一切都封装起来了dataset 和 datareader 对象有什么区分?DataSet 可以离线处理,前后滚动.DataReader 不能离线处理,且是只读的向前的,不过

8、速度明显会很快 DataSet 可以存储数据库各种对象的,比方表触发器等,而DataReader 只能存储游标记录DataSet 可以更新回原来的数据库,DataReader 不行;DataSet 可以 FORWORDPREVIUS,而DataReader 只能FW; DataReader 类似一个只能向前的游标记录集DataSet 叫数据集!是 ADO.net 相对与 ADO 实现断开式数据库连接性的主要表达!DateReader 是一个客户端的只向前游标,两者的应用领域不同!读取数据后!假设要进展比较频繁的改动,可以使用DataSet,并且 DataSet 也支持串行化,可与 xslt 结

9、合!进展 web 开发! DataReader 那么偏向于快速读取数据!针对数据量比较大的数据可能应用的更加频繁点! ADO.NET 供给以下两个对象,用于检索关系数据并将其存储在内存中:DataSet 和DataReader。DataSet 供给一个内存中数据的关系表示形式,一整套包括一些表在内的数据这些表包含数据、对数据进展排序并约束数据 ,以及表之间的关系。DataReader 供给一个来自数据库的快速、仅向前、只读数据流。当 使 用 DataSet 时 , 经 常 会 利 用 DataAdapter 也 可 能 是CommandBuilder与数据源进展交互。当使用DataSet 时,

10、也可以利用 DataView 对 DataSet 中的数据应用排序和筛选。也可以从DataSet 继承,创立强类型 DataSet,用于将表、行和列作为强类型对象属性公开。以下主题包括的信息涉及:使用DataSet 或DataReader 的最正确时机、如何优化访问它们所包含数据、以及如何优化使用 DataAdapter包括CommandBuilder和DataView 的技巧。DataSet 与DataReader当设计应用程序时,要考虑应用程序所需功能的等级,以确定使用DataSet 或者是 DataReader。要通过应用程序执行以下操作,就要使用DataSet: r 在结果的多个离散表

11、之间进展导航。r 操作来自多个数据源例如,来自多个数据库、一个XML 文件和一个电子表格的混合数据的数据。r 在各层之间交换数据或使用XML Web效劳。与DataReader 不同的是,DataSet 能传递给远程客户端。r 重用同样的记录集合,以便通过缓存获得性能改善例如排序、搜寻或筛选数据。r 每条记录都需要执行大量处理。对使用 DataReader 返回的每一行进展扩展处理睬延长效劳于 DataReader 的连接的必要时间,这影响了性能。r 使用 XML 操作对数据进展操作,例如可扩展样式表语言转换XSLT 转换或 XPath 查询。对于以下状况,要在应用程序中使用DataReade

12、r: r 不需要缓存数据。r 要处理的结果集太大,内存中放不下。r 一旦需要以仅向前、只读方式快速访问数据。注填充 DataSet 时, DataAdapter 使用 DataReader。因此,使用DataAdapter 取代DataSet 提升的性能表现为节约了DataSet 占用内存和填充DataSet 需要的循环。一般来说,此性能提升只是象征性的, 因此,设计决策应以所需功能为根底。经常听到有人问这个问题:“在 ASP.NET Web 应用程序中我应当用DataReader 类还是 DataSet 类呢?”在很多文章以及新闻组的贴子中我经常看到这样的误会,即认为 DataReader

13、SqlDataReader 或OleDbDataReader 的缩写比 DataSet 好。有时候我也会看到相反的说法。事实上,Microsoft 创立了这两个数据存取类是由于它们都是我们所需要的。每个类都有其优点和缺乏,你可以依据应用环境来选择用哪一个。本文就两者的选择问题做了很清楚的表达,可以让你在运用 ASP.NET 时,在选择DataReader 类或DataSet 类的方面得到一些指南。在基于客户端的Windows Form 应用程序环境下,这些规章可能会转变。我在做这些表达时,假设你已经用过 DataReader 和 DataSet 类了,并对它们很生疏。运用DataReader

14、类下面就是运用DataReader 类的抱负条件:你读取的数据必需是新的, 所以在每次需要数据的时候,你都必需从数据库读取。创立一个DataReader 类不会消耗很多内存,不过随着负荷的增加,DataSet 上的性能也会很快地提高参考资源中Visual Studio Magazine 中的文章。你对每行数据的需求很简洁。该状况的最好的例子就是简洁地将DataReader 绑定到一个Web 控件,如DataGrid 或DropDownList。你只需要从数据库中以只向前的(forward-only) 、只读的形式来存取XML数据。在这种状况下, 你可以用 SQLCommand对象的Excecu

15、teXmlReader()方法来得到一个XmlReader 类相当于XML 版的DataReader。这就需要一个运用 FOR XML 子句的SQL Server 查询,或者一个包含有效XML 的ntext 字段。你方案对数据库进展几个重复的调用,来读取一小块信息。在这种情况下,我们前面提到过的性能数据会有更大的提高。确实,使 DataSet 类更强大的很多功能只适用于基于客户端的Windows Form 应用程序,比方在多个表之间建立关系的功能。在很多状况下,DataSet 类都比 DataReader 类更有优势,而且在有些状况下,你根本就不能用DataReader 类。运用DataSet 类在下面的状况,你应当考虑运用 DataSet 类: 你构建了一个 Web service,它运用的数据是你作为返回值读取的数据。由于DataReader 类必需保持到数据库的连接,所以它们不能被序列化到XML 中,也不能被发送给一个Web service 的调用者。你需要排序或筛选数据。在运用一个 DataView对象呈现为DataTable 类的 DefaultView 属性,它包含一个 DataSet 类来排序或筛选数据前,我们先试着用SQL 查询如WHERE 和ORDER B

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 教育/培训

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号