规范:
要更注重标识符的清晰而不是简短。
不要在标识符名称中使用单词缩写。
不要使用不被广泛接受的首字母缩写词,即使被广泛接受,非必要时也不要用。
不要使用注释,除非代码本身“一言难尽”。
要尽量编写清晰的代码,而不是通过注释澄清复杂的算法。
要提供简单的方法重载,其必需的参数的数量要少。
考虑从最简单到最复杂来组织重载。
避免从finally块显式地引发异常(因方法调用而隐式地引发的异常可以接受)。
要优先使用try/finally而不是try/catch块来实现资源清理代码。
要在抛出的异常中描述异常为什么发生。如有可能,还要说明如何防范。
避免使用常规catch块,而应该使用捕获System.Exception的catch块来替代。
避免捕获无法获知其正确行动的异常。对这种异常不进行处理比处理的不正确要好。
避免在重新引发前捕获和记录异常。要允许异常逃脱,直至它被正常处理。
要在捕获并重新引发异常时使用空的throw语句,以便保持调用栈。
要通过引发异常而不是返回错误码来报告执行失败。
不要让公共成员将异常作为返回值或out参数。要通过异常来指明错误;不要通过它们作为返回值来指明错误。
不要在一个源代码文件中放置多个类。
要用所含公共类型的名称来命名源代码文件。
和C++不同,C#不支持隐式确定性资源清理(在编译时确定的位置进行隐式对象析构)。幸好,C#通过using语句支持显式确定性资源清理,通过终结器支持隐式非确定性资源清理。
特殊字符串
逐字字符串,前缀字符@
字符串差值,前缀字符$
using static命令
以前静态方法的调用通常是包含一个命名空间的前缀后面跟类型名。
为了避免显示写法以及希望有一种简写的形式,此时便可以采用C#6.0新增的using static命令。
此指令只对静态方法和属性有效,对于实例成员不起作用。
想要了解string.Format()的完整的字符串格式列表,可以访问MSDN文档。
函数参数的类型
1.值类型。
2.ref 引用类型,用作ref参数的变量必须在传给被调用的方法之前赋值。
3.out同ref,可以不用在被调用的方法之前赋值。每个正常返回的代码路径都必须对所有out参数进行赋值。
4.参数数组。params前缀,不一定是方法生命中的唯一参数,但必须是方法声明中的最后一个参数。所以最多只能有一个参数数组。
5.可选参数,一定放在所有必选参数(无默认值的函数)的后面。
6.假如由于一个方法有可选参数,造成两个方法都适用,编译器最终选择的是无可选参数的方法。