String 类型

string s = "a" + "b";
string s1 = "b";
string s2 = "a" + s1;

上述代码的IL代码如下:

从 IL_0001:ldstr "ab"  这一行代码可以看出, 当字符串赋值用的是字面值时,C#编译器在编译的时候就已经进行了连接操作;

从s1 和 s2 的IL代码可以看出,对非字面值字符串使用 + 操作符,连接则是在运行时发生的,这会导致运行的时候,在堆上创建多个对象,而堆是需要垃圾回收的,对性能有影响.因此应该使用 StringBuilder 类型.

猜你喜欢

转载自www.cnblogs.com/refuge/p/8906235.html
今日推荐