Лучший синтаксис для создания многострочной строки

Я хочу ссылки Rvalues.

Всеми другими новыми возможностями является материал, что мы могли легко жить без (увы функции). Однако отсутствие Rvalues в C++ до сих пор заставило сотни авторов библиотеки шаблонов должными быть "взламывать" вокруг поврежденного Rvalue касательно проблемы.

7
задан Konstantin Spirin 2 October 2009 в 07:43
поделиться

8 ответов

Что насчет этого:

var result = string.Join(Environment.NewLine, new string[]{ 
    "one",
    "two" 
});

Это немного болезненно и, возможно, излишне, но это дает возможность сохранить разделение строк в вашем коде.
To improve things a little, you could use an helper method:

static string MultiLine(params string[] args) {
    return string.Join(Environment.NewLine, args);
}

static void Main(string[] args) {
    var result = MultiLine( 
        "one",
        "two" 
    );
}
21
ответ дан 6 December 2019 в 05:06
поделиться

А как насчет этого?

var result = "one\ntwo";

Если вас это беспокоит Концы строк, специфичные для ОС, используйте Формат :

var result = String.Format("one{0}two", Environment.NewLine);

(Ну, «суетливость» - неправильное слово: при работе с текстовыми файлами окончания строк для ОС часто желательны или даже необходимы, когда работа с устаревшим программным обеспечением.)

11
ответ дан 6 December 2019 в 05:06
поделиться

«Лучший» - это очень открытая точка.

Вы после:

  • Производительность кода
  • Скорость, с которой кодер может его написать
  • Способность другого кодировщика легко понять это
  • Способность другого кодировщика легко его модифицировать

Все это имеет большое значение в отношении «наилучшего» способа что-либо сделать.

2
ответ дан 6 December 2019 в 05:06
поделиться

Я бы сказал, это зависит от того, что Вам нужно ...

Но для упрощения я бы сказал:

var s = new StringBuilder();
s.Append("one");
s.Append("two");
s.ToString();

Но поскольку мы не знаем, для чего Вам это нужно . Довольно сложно дать более точные подсказки

2
ответ дан 6 December 2019 в 05:06
поделиться

Иногда требуется более одной строки. Я использую Environment.NewLine, но я поместил его в метод умножения. :)

    private string newLines(int multiplier)
    {
        StringBuilder newlines = new StringBuilder();
        for (int i = 0; i < multiplier; i++)
            newlines.Append(Environment.NewLine);
        return newlines.ToString();
    }
0
ответ дан 6 December 2019 в 05:06
поделиться

Riffing off of what @codymanix said, you could place the long multiline string in a resource file. This can be easier for certain deployment scenarios since the text "file" will be included in your DLL / EXE.

1
ответ дан 6 December 2019 в 05:06
поделиться

Вы не должны определять большие строки в исходном коде. You should define it in an external text file:

string s = File.OpenText("myfile.txt").ReadToEnd();
1
ответ дан 6 December 2019 в 05:06
поделиться

Эм, как насчет:

string s = 
  "abc\n" + 
  "def\n" ;
1
ответ дан 6 December 2019 в 05:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: