Most efficient way to concatenate strings?

后端 未结 17 1218
野趣味
野趣味 2020-11-22 03:04

What\'s the most efficient way to concatenate strings?

相关标签:
17条回答
  • 2020-11-22 03:41

    It's also important to point it out that you should use the + operator if you are concatenating string literals.

    When you concatenate string literals or string constants by using the + operator, the compiler creates a single string. No run time concatenation occurs.

    How to: Concatenate Multiple Strings (C# Programming Guide)

    0 讨论(0)
  • 2020-11-22 03:41

    System.String is immutable. When we modify the value of a string variable then a new memory is allocated to the new value and the previous memory allocation released. System.StringBuilder was designed to have concept of a mutable string where a variety of operations can be performed without allocation separate memory location for the modified string.

    0 讨论(0)
  • 2020-11-22 03:46

    It really depends on your usage pattern. A detailed benchmark between string.Join, string,Concat and string.Format can be found here: String.Format Isn't Suitable for Intensive Logging

    (This is actually the same answer I gave to this question)

    0 讨论(0)
  • 2020-11-22 03:50

    Try this 2 pieces of code and you will find the solution.

     static void Main(string[] args)
        {
            StringBuilder s = new StringBuilder();
            for (int i = 0; i < 10000000; i++)
            {
                s.Append( i.ToString());
            }
            Console.Write("End");
            Console.Read();
        }
    

    Vs

    static void Main(string[] args)
        {
            string s = "";
            for (int i = 0; i < 10000000; i++)
            {
                s += i.ToString();
            }
            Console.Write("End");
            Console.Read();
        }
    

    You will find that 1st code will end really quick and the memory will be in a good amount.

    The second code maybe the memory will be ok, but it will take longer... much longer. So if you have an application for a lot of users and you need speed, use the 1st. If you have an app for a short term one user app, maybe you can use both or the 2nd will be more "natural" for developers.

    Cheers.

    0 讨论(0)
  • 2020-11-22 03:54

    From this MSDN article:

    There is some overhead associated with creating a StringBuilder object, both in time and memory. On a machine with fast memory, a StringBuilder becomes worthwhile if you're doing about five operations. As a rule of thumb, I would say 10 or more string operations is a justification for the overhead on any machine, even a slower one.

    So if you trust MSDN go with StringBuilder if you have to do more than 10 strings operations/concatenations - otherwise simple string concat with '+' is fine.

    0 讨论(0)
  • 2020-11-22 03:56

    If you're operating in a loop, StringBuilder is probably the way to go; it saves you the overhead of creating new strings regularly. In code that'll only run once, though, String.Concat is probably fine.

    However, Rico Mariani (.NET optimization guru) made up a quiz in which he stated at the end that, in most cases, he recommends String.Format.

    0 讨论(0)
提交回复
热议问题