我会在下面推荐
1.了解何时使用 StringBuilder
您一定听说过StringBuilder 对象在将字符串附加在一起时比普通字符串类型快得多。
The thing is StringBuilder is faster mostly with big strings. This means if you have a loop that will add to a single string for many iterations then a StringBuilder class is definitely much faster than a string type.
However if you just want to append something to a string a single time then a StringBuilder class is overkill. A simple string type variable in this case improves on resources use and readability of the C# source code.
只需在 StringBuilder 对象和字符串类型之间正确选择,您就可以优化您的代码。
2。比较不区分大小写的字符串
在应用程序中,有时需要比较两个字符串变量,忽略大小写。诱人且传统的方法是将两个字符串都转换为全部小写或全部大写,然后比较它们,如下所示:
str1.ToLower() == str2.ToLower()
但是,重复调用函数 ToLower() 是性能瓶颈。通过使用内置的 string.Compare() 函数,您可以提高应用程序的速度。
要检查两个字符串是否相等,忽略大小写如下所示:
string.Compare(str1, str2, true) == 0 //Ignoring cases
C# string.Compare 函数在两个字符串相等时返回一个等于 0 的整数。
3.使用 string.Empty
这与其说是性能改进,不如说是可读性改进,但它仍然算作代码优化。尝试替换以下行:
if (str == "")
与:
if (str == string.Empty)
这只是更好的编程实践,对性能没有负面影响。
注意,有一种流行的做法是检查字符串的长度是否为 0 比将其与空字符串进行比较要快。虽然这可能是真的,一旦它不再是显着的性能改进。而是坚持使用 string.Empty。
4.将 ArrayList 替换为 List
当在同一个列表中存储多种类型的对象时,ArrayList 很有用。但是,如果您在一个 ArrayList 中保留相同类型的变量,则可以改用 List 对象来提高性能。
取下面的ArrayList:
ArrayList intList = new ArrayList();
intList.add(10);
return (int)intList[0] + 20;
注意它只包含整数。使用 List 类要好得多。要将其转换为类型化列表,只需更改变量类型:
List<int> intList = new List<int>();
intList.add(10)
return intList[0] + 20;
不需要使用 List 转换类型。对于整数等原始数据类型,性能提升尤其显着。
5.使用 && 和 ||运营商
在构建 if 语句时,只需确保使用双与符号 (&&) 和/或双或符号 (||),(在 Visual Basic 中它们是 AndAlso 和 OrElse)。
使用 & 和 | 的 If 语句必须检查语句的每个部分,然后应用“and”或“or”。另一方面,&& 和 ||一次一个地检查语句,并在满足或不满足条件时立即停止。
执行更少的代码总是可以提高性能,但它也可以避免运行时错误,请考虑以下 C# 代码:
if (object1 != null && object1.runMethod())
如果object1 为null,使用&& 运算符,object1.runMethod() 将不会执行。如果 && 运算符被 & 替换,即使 object1 已知为 null,object1.runMethod() 也会运行,从而导致异常。
6.智能试接
Try-Catch 语句旨在捕获程序员无法控制的异常,例如连接到网络或设备。使用 try 语句来保持代码“简单”而不是使用 if 语句来避免容易出错的调用会使代码变得非常慢。重构您的源代码以减少需要的 try 语句。
7.替换分区
在进行除法运算时,C# 相对较慢。一种替代方法是用乘法移位操作替换除法,以进一步优化 C#。文章详细解释了如何进行转换。
REFERENCE