Bru*_*oLM 17 .net c# string string-concatenation
这些例子之间有区别吗?我应该在哪种情况下使用哪个?
var str1 = "abc" + dynamicString + dynamicString2;
var str2 = String.Format("abc{0}{1}", dynamicString, dynamicString2);
var str3 = new StringBuilder("abc").
Append(dynamicString).
Append(dynamicString2).
ToString();
var str4 = String.Concat("abc", dynamicString, dynamicString2);
Run Code Online (Sandbox Code Playgroud)
有类似的问题:
+运算符,并且在答案中甚至没有提到它被转换为String.Concat这个问题询问每种情况会发生什么,这些例子的实际输出是什么?他们有什么不同?在哪种情况下我应该在哪里使用它们?
Hen*_*man 16
只要你没有使用很多(100+)字符串或非常大(长度> 10000)的字符串,唯一的标准就是可读性.
对于这种尺寸的问题,请使用+.这种+过载被添加到字符串类可读性.
使用string.Format()更复杂的成分和在需要替换或格式化.
使用StringBuilder结合多件(几百或更多)或非常大的块(长>> 1000)时.StringBuilder没有可读性功能,只是为了提高性能.
收集所有答案中的信息后,结果如下:
该+操作是一样的String.Concat,这可以在一个循环外小串连使用,可以在小任务中使用.
在编译时,如果+运算符是静态的,则运算符生成单个字符串,而即使它们是静态的,也会String.Concat生成表达式str = str1 + str2;.
String.Format与StringBuilder..(示例3)相同,不同之处在于String.Format对params进行验证并StringBuilder使用参数的长度实例化内部.
String.Format 应该在需要格式字符串时使用,以及连接简单字符串.
StringBuilder 当你需要连接大字符串或循环时,应该使用它.
在场景中使用+运算符.
当你在字符串中混合使用变量和静态数据时,我只会使用String.Format()方法.例如:
string result=String.Format(
"Today {0} scored {1} {2} and {3} points against {4}",..);
//looks nicer than
string result = "Today " + playerName + " scored " + goalCount + " " +
scoreType + " and " + pointCount + " against " + opposingTeam;
Run Code Online (Sandbox Code Playgroud)
我没有看到使用StringBuilder的意义,因为你已经处理了三个字符串文字.
我个人在处理String数组时只使用Concat.