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

каков наилучший способ создания многострочной строки в C#?

Я знаю следующие способы:

Использование StringBuilder

var result = new StringBuilder().AppendLine("one").AppenLine("two").ToString()

выглядит слишком многословен.

С помощью @

      var result = @"one
two"

выглядит уродливо и плохо отформатировано.

знаете ли вы лучшие способы?

8 ответов


Как насчет этого:

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

это немного болезненно и, возможно, излишне, но это дает возможность сохранить разделение строк в вашем коде.
Чтобы немного улучшить ситуацию, вы можете использовать вспомогательный метод:

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

static void Main(string[] args) {
    var result = MultiLine( 
        "one",
        "two" 
    );
}

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

var result = "one\ntwo";

Если вы суетитесь о OS-конкретных концовках строк, используйте Format:

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

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


"Best" - очень открытая точка.

вы :

  • производительность кода
  • скорость кодер может писать
  • возможность для другого кодера понять это легко
  • возможность для другого кодера легко изменить его

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


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

но для упрощения я бы пошел с:

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

но так как мы не знаем, для чего он вам нужен. Это довольно трудно дать лучшие подсказки


вы не должны определять большие строки в исходном коде. Вы должны определить его во внешнем текстовом файле:

string s = File.OpenText("myfile.txt").ReadToEnd();

риффы от что сказал @codymanix, вы можете поместить длинную многострочную строку в файл ресурсов. Это может быть проще для определенных сценариев развертывания, так как текстовый "файл" будет включен в ваш DLL / EXE.


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

string s = 
  "abc\n" + 
  "def\n" ;

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

    private string newLines(int multiplier)
    {
        StringBuilder newlines = new StringBuilder();
        for (int i = 0; i < multiplier; i++)
            newlines.Append(Environment.NewLine);
        return newlines.ToString();
    }