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

提高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, instance Equals 和 比较运算符(==)之间的关系

10.理解 GetHashCode方法的缺陷

11.在编写循环时,优先使用 foreach.

12.在定义变量的时候就将其初始化

13.使用静态构造函数来初始化静态成员变量

14.用多个构造函数时,利用构造函数链

15.使用using和try/finally来处理资源的释放

16.尽量避免产生资源垃圾

17.尽量避免使用装箱(boxing)和拆箱(unboxing)

18.实现类的 Dispose 方法

19.在接口和继承(Inheritance)之间,优先使用接口(interface)

20.区分接口和重载(overrides)

21.用委托(delegate)来实现回调(callback)

22.用事件(event)来定义外部接口

23.避免返回类内部成员的引用

24.使用元数据来控制程序

25.优先使用可序列化(serilizable)类型

26.对需要排序的对象实现IComparable和IComparer接口

27.避免使用 ICloneable接口

28.避免使用类型转换操作符

29.只有当基类加入了与派生类中现有的函数名称相同的函数时,才需要使用 new 操作符

30.尽量使用 CLS-Compliant

31.尽量编写短少,简单的函数

32.尽量编写比较小的程序集(assembly)

33.限定类型的可见性(visibility)

34.编写大粒度的 web API

35.在使用事件时,优先继承基类事件,而不是重新创建一个事件

36.多使用 framework 的运行时调试 (DEBUG, TRACE, EVENTLOG等)

37.使用.net标准的配置机制

38.使用并且在类中支持.net的数据绑定功能 (Data Binding)

39.使用.net的验证机制 (Validation)

40.根据你的需求选择正确的集合类(Collection)

41.在自定义结构中使用 DataSet

42.利用属性(Attributes)

43.不要过度使用反射(Reflection)

44.创建完整的,应用程序特定的异常

45.尽可能多的考虑程序可能出现的异常,并作出处理

46.尽可能少的使用 Interop

47.尽量使用安全代码 (safe code)

48.多多学习、使用外部工具和资源

49.准备使用 C# 2.0

50.学习 ECMA 标准

转载于:https://www.cnblogs.com/lmjob/archive/2009/03/01/1400860.html

更多相关:

  • nan 是not a number ,inf是无穷大 numpy.nan_to_num(x): 使用0代替数组x中的nan元素,使用有限的数字代替inf元素...

  • 简介 Simple Reference  基础CUDA示例,适用于初学者, 反映了运用CUDA和CUDA runtime APIs的一些基本概念.Utilities Reference  演示如何查询设备能力和衡量GPU/CPU 带宽的实例程序。Graphics Reference  图形化示例展现的是 CUDA, OpenGL,...

  • 在做开发的过程中难免需要给内核及下载的一些源码打补丁,所以我们先学习下Linux下使用如如何使用diff制作补丁以及如何使用patch打补丁。...

  • 我在调研ATS 4.2.3挂载SSD的过程中,遇到很多坑,特此详细记录我摸索的主要过程,以便大家以后避免之。 基本思路可以完全照搬参考文献[2][3] 下面的安装假定是以root用户身份进行的,Linux服务器已经安装好系统,磁盘已经做好分区。 首先需要认识我们的Linux服务器的硬件配置和软件情况 硬件配置: DELL...

  • 该博文整理一些在使用stl编程过程中遇到的小经验: 1.在多线程环境下面打印调试,如何使用cout及时刷新到屏幕上? 在C中我们经常这样使用: printf("Hello World "); fflush(stdout); 如果使用stl,我们可以这样使用: cout << "Hello World" << endl <...

  • Python 与 ABC 的一个重要区别在于其类型系统。ABC 采用静态类型,编译器会检查程序中的变量类型是否保持一致,如果不一致,程序就无法运行。并且,ABC与当时大多数静态语言不同,采用的是类型推导(和 Haskell 一样),而不是类型声明(比如 C 语言)。而 Python 采用动态类型,所有类型检查都是在程序运行过程中,而不...

  • python是计算机二级考试的科目之一,并没有级别的划分。其考试目标是测试考生掌握Python语言知识的程度和对Python语言的编程能力、调试能力和综合应用能力,在当下的应用中是十分重要的。 什么是python Python语言是一种解释运行、面向对象、扩展性强的程序设计语言,是大学生学习计算机编程能力、理解计算机解决问题的方法的...

  • 正在学C,书上老说空指针,或者说void指针,对于我这样的生手来说,理解非常容易造成混淆,因为void这个单词的意思也是空,到底空指针的意思是指指向地址为空的类型呢,还是指void类型的指针呢 (1)空指针所对应的是指指向的对象为空的指针。            不经发问,什么叫指向为空呢?要理解这点,必须理解如下几点(有点啰嗦,但...

  • 一、reponseType 1、什么是reponseType XMLHttpRequest.reponseType属性是一个枚举类型的属性,返回响应数据的类型,他允许我们手动的设置 返回数据的类型。如果我们将它设置为一个空字符串,它将默认的使用"text"类型。 当将reponseType设置为一个特定的类型的时候需要确保服务...

  • SNMP中,数据类型并不多。这里我们就讨论这些数据类型,而不关心这些数据类型在实际中是如何编码的。INTEGER一个变量虽然定义为整型,但也有多种形式。有些整型变量没有范围限制,有些整型变量定义为特定的数值(例如,IP的转发标志就只有允许转发时的或者不允许转发时的这两种),有些整型变量定义一个特定的范围(例如,UDP和TCP的端口号...