深入理解C#:15个实用C#编程技巧总结

C#是一种安全的、稳定的、简单的、优雅的,由C和C++衍生出来的面向对象的编程语言。它在继承C和C++强大功能的同时去掉了一些它们的复杂特性(例如没有宏以及不

C#是一种安全的、稳定的、简单的、优雅的,由C和C++衍生出来的面向对象的编程语言。它在继承C和C++强大功能的同时去掉了一些它们的复杂特性(例如没有宏以及不允许多重继承)。

同时。C#综合了VB简单的可视化操作和C++的高运行效率,以其强大的操作能力、优雅的语法风格、创新的语言特性和便捷的面向组件编程的支持成为.NET开发的首选语言。

本文整理了C#开发和使用过程中的15个小技巧,希望能对大家的实际开发带来真正的方便。

1、使用StringBuilder代替使用string 连接符 \”+\”

说明:String类对象是不可变的(只读),一旦创建该对象,就不能修改该对象的值。

对象String对象的重新赋值,本质上是重新创建了一个String对象并将新的值赋值给该对象。如果字符串存在较多次的拼接时候,最后使用StringBuilder类,需要引用命名空间 System.Text。

该类不是创建新的对象,而是通过Append、Insert、Remove等方法对字符串直接进行操作,最后通过ToString方法返回操作结果。从而避免创建大量对象,造成资源浪费、性能降低。

不要这样写:

推荐这样写:

2、用foreach 代替 for 循环

如果是可以使用foreach的时候,尽量用foreach,而不是 for。前者的效率比后者要高很多。

3、使用HashTable 代替其他字典集合类型(如 StringDictionary、NameValueCollection),存放少量数据的时候可以使用HashTable。

4、避免使用ArrayList

因为ArrayList使用的时候存在装箱、拆箱会造成性能的损失,可以用泛型来代替。

5、如果是字符进行比较的时候可以采用String.Compare,它会忽略大小写进行比较,而不要使用UpperCase、Lowercase转换后进行比较。

6、如果只是从xml对象中读取数据,可以用只读的XPathDocument代替XMLDocument,可以提高性能。

7、C#捕获异常的时候,不要使用通用的System.Exception。可以根据程序逻辑考虑可能出现的异常进行控制。

8、要避免在循环体内声明变量,如果可以的化,最好放在循环体外声明,在循环体内初始化。

9、采用using和try/finaly来做资源清理。

10、不要使用异常(Exception)来控制程序的流程。因为捕获异常对性能的损耗很大,最好不要用异常去控制程序的流程。

11、使用值类型的ToString方法避免装箱操作。

因为值类型到引用类型会造成性能的损耗,所以使用值类型的ToString方法可以避免装箱造成的性能损耗。

12、避免滥用反射,反射也是比较浪费性能的操作

当使用反射来调用类型或者触发方法,或者访问一个字段或者属性是,CLR需要做很多工作:校验参数、检查权限……所以非常耗时,因此这样的情况下要尽量避免反射的使用。

13.使用using语句进行别名,这个方法适合针对结构体。

因为很多时候编程上需要做Win32平台相关的一些工作,比如我要读取一个Unicode字符,但C#并没有双字Word类型,如果我们要支持双字,那么就需要自己定义类或者结构体,但实际上在C++里面,双字实际上是unsigned short,也就是说我们可以用UInt 16来实现对Word关键字的支持,但这里有一个小小的纠结,那就是我知道Word是Unsigned Int16,但是能不能定义成Word呢?这样方便我们记忆啊。

但是有的,这时候我们只需要使用using语句就可以了。做法是这样子的:

这样就可以使用Word关键字声明变量了。

14.定义值类型时,它的大小不要超过16字节,否则影响性能(频繁复制时),要么改为使用引用类型,要么让它按ref引用传递。

15.字符串操作

●字符串字面量、字符串常量,直接用\”+\”相连效率高,因为:string str = \”srf\”+\”ttt\”+\”ccc\”;会直接编译成string str = \”srftttccc\”;,同样适用于字符串常量。

●尽量避免对变量的装箱:字符串+变量,较好的做法是:字符串+变量.ToString()

●频繁操作字符串时用StringBuilder,并制定足够大的容量,而string.Format(\”{0}{1}{2}\”,str1,str2,str3);内部也是用StringBuilder。

C#的开发是一个长期的工作,从基础开始,把握好一些技巧的应用,相信通过你的努力,一定能开发出有创意的C#程序。

原创文章,作者:小条,如若转载,请注明出处:https://www.sudun.com/ask/79760.html

(0)
小条's avatar小条
上一篇 2024年5月31日 上午1:29
下一篇 2024年5月31日 上午1:29

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注