猜猜几种c#字符串连接所消耗时间的先后?
1. 字符串字面值直接连加
test = "I1" + "I2" + "I3" + "I4" + "I5";
2.字符串字面值用+=相加
test = "I6"; test += "I7"; test += "I8"; test += "I9"; test += "I10";
3.sn为字符串变量
test = s1 + s2 + s3 + s4 + s5;
4.
test = s1; test += s2; test += s3; test += s4; test += s5;
5.csn为字符串常量
test = cs1 + cs2 + cs3 + cs4 + cs5;
6.
test = cs1; test += cs2; test += cs3; test += cs4; test += cs5;
以上6种方式各循环10000000次,你能猜出他们执行所需时间的的顺序吗? 如果你是c++程序员,我觉得对于这个问题你可能会不占优势,你可能想到临时变量之类的吧.
看测试代码:
const int Num = 10000000; int end; string test = ""; int start = Environment.TickCount; for (int i = 0; i < Num; i++) { test = "I1" + "I2" + "I3" + "I4" + "I5"; } end = Environment.TickCount; Console.WriteLine("字符串字面值:" + (end - start)); start = Environment.TickCount; for (int i = 0; i < Num; i++) { test = "I6"; test += "I7"; test += "I8"; test += "I9"; test += "I10"; } end = Environment.TickCount; Console.WriteLine("字符串字面值:" + (end - start)); string s1 = "e1"; string s2 = "e2"; string s3 = "e3"; string s4 = "e4"; string s5 = "e5"; start = Environment.TickCount; for (int i = 0; i < Num; i++) { test = s1 + s2 + s3 + s4 + s5; } end = Environment.TickCount; Console.WriteLine("变量:" + (end - start)); s1 = "h1"; s2 = "h2"; s3 = "h3"; s4 = "h4"; s5 = "h5"; start = Environment.TickCount; for (int i = 0; i < Num; i++) { test = s1; test += s2; test += s3; test += s4; test += s5; } end = Environment.TickCount; Console.WriteLine("变量:" + (end - start)); const string cs1 = "H1"; const string cs2 = "H2"; const string cs3 = "H3"; const string cs4 = "H4"; const string cs5 = "H5"; start = Environment.TickCount; for (int i = 0; i < Num; i++) { test = cs1 + cs2 + cs3 + cs4 + cs5; } end = Environment.TickCount; Console.WriteLine("字符串常量 :" + (end - start)); start = Environment.TickCount; for (int i = 0; i < Num; i++) { test = cs1; test += cs2; test += cs3; test += cs4; test += cs5; } end = Environment.TickCount; Console.WriteLine("字符串常量:" + (end - start));
你答对了吗?
上答案啦!