为什么在C#中使用String.Concat()?我一直在想这个问题。为什么使用String.Concat()而不是使用加号运算符。我理解String.Format是因为它使用加号运算符来清空漏洞并使您的代码看起来更好。例如字符串一=“鲍勃”;字符串二=“吉姆”;字符串三=一+二;字符串三=String.Concat(一,二);只要两个操作数是字符串,使用+操作符和String.Concat方法没有区别。使用+运算符的代码实际上编译为String.Concat调用。使用最符合您意图的代码。当我知道要连接多少个字符串时,我会使用+-但如果您只有一个数组怎么办?在这种情况下,您不知道要应用多少次+,因此您必须调用一个方法(或者自己循环,这很糟糕)。我不记得经常调用string.Concat-这是非常罕见的。正如guffa所说,+无论如何都会编译string.Concat调用-值得注意的是string实际上没有+运算符,如果您试图在反射中使用它可能会造成混淆!+一个好处是,如果所有参数都是常量表达式,编译器会为你执行连接,所以你不需要在执行时执行。在大多数代码中,这种微小的性能优势并不重要,但当我发现最易读的代码也具有性能优势时,这总是很好的:)我自己也遇到了同样的问题,这个问题引发了我对它的调查,我创建了下面的类publicclassClass1{stringstr="One"+"Team";stringstr2=string.Concat("一个","团队");}下面是对应的IL代码。.methodpublichidebysigspecialnamertspecialnameinstancevoid.ctor()cilmanaged{//代码大小40(0x28).maxstack8IL_0000:ldarg.0IL_0001:ldstr"OneTeam"IL_0006:stfldstringStringConcat.Class1::strIL_000b:.0IL_000c:ldstr"一个"IL_0011:ldstr"团队"IL_0016:调用字符串[mscorlib]System.String::Concat(string,string)IL_001b:stfld字符串StringConcat.Class1::str2IL_0020:ldarg.0IL_0021:调用实例void[mscorlib]System.Object::.ctor()IL_0026:nopIL_0027:ret//endofmethodClass1::.ctor}对我来说,它看起来确实像string.Concat比+运算符有更多的重载步骤。但我确实知道在System.String类中,重载的+运算符会发生一组类似的操作。思考?因为您可以使用具有两个对象的版本;)可移植性(您的)。在其他语言中,+在呈现两个字符串时可能不会像您预期的那样连接。这可能是完全出乎意料的。或者,在一些松散类型的语言中,如果您在整数或数字标量变量和字符串之间使用+尝试将序列转换为数字然后将它们相加,则可能不会抛出编译器警告。相反,在某些情况下,与+相比,.concat()非常明显且可读。+运算符是一个数学运算符。因此,在使用此运算符连接字符串之前,编译器必须决定是将其用作加法运算符还是字符串连接数学运算符。例如:如果你连接a+b+c+d+e+f,编译器会做5次操作的决定5次。性能方面不推荐。但是,如果您只有一个连接,老实说,我认为使用+或Concat()方法在性能上没有太大区别;有些人喜欢它。我知道我宁愿使用Concat,因为+确实不是很直观。尤其是深入研究代码;很难判断这些是您要添加的数字还是您要结束的两个字符串或您要进行矢量加法的两个点。?我相信它与字符串a+字符串b相同。C#中的字符串类型是不可变的,因此字符串操作的首选方法是通过StringBuilder。正如Guffa总结的那样:“使用最能代表您意图的代码。”当然,对于性能不是太大问题的简单用途,请使用+或concat。以上是C#学习教程:为什么在C#中使用String.Concat()?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
