Como: Concatenar várias cadeias de caracteres (guia de programação translation from VPE for Csharp)

Concatenação é o processo de acrescentar uma seqüência de caracteres ao participante de outra seqüência de caracteres.Quando você concatenar seqüências literais ou constantes de seqüência de caracteres usando o + operador, o compilador cria uma única cadeia de caracteres. Não ocorre de concatenação de time de execução.No entanto, variáveis de seqüência de caracteres podem ser concatenadas apenas em time de execução.Nesse caso, você deve compreender as implicações de desempenho de várias abordagens.

Exemplo

O exemplo a seguir mostra como dividir uma longa seqüência literal em seqüências de caracteres menores para melhorar a legibilidade no código-fonte.As partes a seguir irá ser concatenada em uma única seqüência de caracteres em time de compilar.Há é não executar desempenho em time de custos independentemente do número de seqüências de caracteres envolvidos.

static void Main()
{
    // Concatenation of literals is performed at compile time, not run time.
    string text = @"Historically, the world of data and the world of objects " +
    "have not been well integrated. Programmers work in C# or Visual Basic " +
    "and also in SQL or XQuery. On the one side are concepts such as classes, " +
    "objects, fields, inheritance, and .NET Framework APIs. On the other side " +
    "are tables, columns, rows, nodes, and separate languages for dealing with " +
    "them. Data types often require translation between the two worlds; there are " +
    "different standard functions. Because the object world has no notion of query, a " +
    "query can only be represented as a string without compile-time type checking or " +
    "IntelliSense support in the IDE. Transferring data from SQL tables or XML trees to " +
    "objects in memory is often tedious and error-prone.";

    Console.WriteLine(text);
}

Para concatenar variáveis de seqüência de caracteres, você pode usar o + ou += operadores, ou o String.Concat, String.Format ou StringBuilder.Append métodos. The + operador é fácil de usar e torna código intuitiva, mas funciona em série: uma nova seqüência é criada para cada uso do operador.Portanto, é um pouco ineficiente encadear vários operadores em conjunto.Por exemplo, observe o código a seguir:

static void Main(string[] args)
{
    // To run this program, provide a command line string.
    // In Visual Studio, see Project > Properties > Debug.
    string userName = args[0];
    string date = DateTime.Today.ToShortDateString();

    // Use the + and += operators for one-time concatenations.
    string str = "Hello " + userName + ". Today is " + date + ".";
    System.Console.WriteLine(str);

    str += " How are you today?";
    System.Console.WriteLine(str);

    // Keep the console window open in debug mode.
    Console.WriteLine("Press any key to exit.");
    Console.ReadKey();
}

// Example output: 
//  Hello Alexander. Today is 1/22/2008.
//  Hello Alexander. Today is 1/22/2008. How are you today?
//  Press any key to exit.
//
Observação:

Em operações de concatenação de seqüência de caracteres, o compilador translation from VPE for Csharp trata uma seqüência de caracteres nula da mesma sistema autônomo uma seqüência de caracteres vazia, mas não converte o valor de seqüência de caracteres nula original.

Se você não estiver concatenando grandes números de seqüências de caracteres (por exemplo, em um loop), o custo de desempenho desse código provavelmente não é significante.O mesmo vale para o String.Concat e String.Format métodos.

No entanto, quando o desempenho for importante, você sempre deve usar o StringBuilder classe de concatenar cadeias de caracteres. O código a seguir usa o Append método para o StringBuilder classe concatenar cadeias de caracteres sem o efeito de encadeamento de + operador.

class StringBuilderTest
{
    static void Main()
    {
        string text = null;

        // Use StringBuilder for concatenation in tight loops.
        System.Text.StringBuilder sb = new System.Text.StringBuilder();
        for (int i = 0; i < 100; i++)
        {
            sb.AppendLine(i.ToString());
        }
        System.Console.WriteLine(sb.ToString());

        // Keep the console window open in debug mode.
        System.Console.WriteLine("Press any key to exit.");
        System.Console.ReadKey();
    }
}
// Output:
// 0
// 1
// 2
// 3
// 4
// ...
//

Consulte também

Conceitos

Guia de Programação C#

Referência

Sequências (guia de programação C#)

String

StringBuilder

Date

History

Motivo

Julho de 2008

Novo tópico.

Aprimoramento de informações.