Por que as pessoas continuam confundindo seqüências com literais? A resposta aceita é uma ótima resposta para uma pergunta diferente; não para este.
Sei que esse é um tópico antigo, mas vim aqui com possivelmente a mesma pergunta do OP, e é frustrante ver como as pessoas continuam interpretando mal. Ou talvez eu esteja interpretando mal, não sei.
Grosso modo, uma string é uma região da memória do computador que, durante a execução de um programa, contém uma sequência de bytes que pode ser mapeada para caracteres de texto. Um literal de string, por outro lado, é um código-fonte, ainda não compilado, que representa o valor usado para inicializar um string posteriormente, durante a execução do programa em que ele aparece.
Em C #, a instrução ...
string query = "SELECT foo, bar"
+ " FROM table"
+ " WHERE id = 42";
... não produz uma cadeia de três linhas, mas uma linha; a concatenação de três strings (cada uma inicializada de um literal diferente), nenhuma das quais contém um modificador de nova linha.
O que o OP parece estar perguntando - pelo menos o que eu perguntaria com essas palavras - não é como introduzir, na sequência compilada, quebras de linha que imitam as encontradas no código-fonte, mas como interromper a clareza por muito tempo. , uma única linha de texto no código-fonte sem introduzir quebras na sequência compilada. E sem exigir um tempo de execução estendido, juntei as várias substrings provenientes do código-fonte. Como as barras invertidas à direita dentro de uma cadeia de caracteres multilinha literal em javascript ou C ++.
Sugerir o uso de strings verbatim, funções esquecidas StringBuilder
, String.Join
s ou mesmo aninhadas com inversões de strings e o que não, me faz pensar que as pessoas não estão realmente entendendo a pergunta. Ou talvez eu não entenda.
Até onde eu sei, o C # não (pelo menos na versão paleolítica que ainda estou usando, da década anterior) possui um recurso para produzir de maneira limpa literais de cadeias multilinhas que podem ser resolvidas durante a compilação e não na execução.
Talvez as versões atuais o suportem, mas pensei em compartilhar a diferença que percebo entre strings e literais de strings.
ATUALIZAR:
(Do comentário de MeowCat2012) Você pode. A abordagem "+" do OP é a melhor. De acordo com as especificações, a otimização é garantida: http://stackoverflow.com/a/288802/9399618