#c#
#c#
Вопрос:
Это пример синтаксиса, который я пробовал, но не хочу использовать n
.
Console.WriteLine("x"
"x"
"x"
"x"
"x");
Один вызов должен выдать:
x x x x x
Комментарии:
1. Это кажется очень странным утверждением. Если вы не хотите использовать
n
, то все будет размещаться в одной строке.2. Цель состоит в том, чтобы выписать много аргументов по строке на аргумент, или вы пытаетесь выписать одну многострочную строку? На последний вопрос ниже дан правильный ответ с использованием @»»
3. Я попробовал использовать @, и это сработало — так что последнее. Что вы имеете в виду под «многими аргументами по строке на аргумент»? Как бы это выглядело?
Ответ №1:
Один вызов не должен приводить к этому, потому что у вас есть два строковых литерала. На самом деле, это даже не будет компилироваться…
Попробуйте:
Console.WriteLine("xnx");
Или на худой конец:
Console.WriteLine(@"x
x");
Комментарии:
1. Почему вы не хотели бы использовать
n
?
Ответ №2:
Вы могли бы упростить это и использовать строковые литералы в кавычках, такие как:
Console.WriteLine(@"X
X
X
X
X
X");
Комментарии:
1. Ага. Каждый день изучайте что-то новое. Спасибо.
Ответ №3:
Если у вас есть коллекция элементов и вы хотите записать их все в отдельных строках, это всегда вариант:
var myItems = new[] { "x", "x", "x", "x", "x" };
Console.WriteLine(String.Join(Environment.NewLine, myItems));
// or without the collection
Console.WriteLine(String.Join(Environment.NewLine, "x", "x", "x", "x", "x"));
Ответ №4:
Попробуйте это:
Console.WriteLine(@"x
x
x
something
notice this respects identation");
Ответ №5:
Не так просто, поскольку строка записи принимает только один элемент ввода или элемент с параметрами форматирования, поэтому либо
Console.WriteLine("xnx");
or
Console.WriteLine("{0}n{1}n{2}","x","x","x");
n
это экранированный символ перевода строки
(второй пример форматов для 3-х x)
Вы могли бы рассмотреть несколько строк записи, по одной для каждого ‘x’?
Ответ №6:
Еще один вариант выглядит примерно так. (Хотя я думаю, что правильный ответ — использовать n
.)
static void Main(string[] args)
{
WriteMulti("A", "B", "C", "D", "E", "F", "G");
Console.ReadLine();
}
static void WriteMulti(params string[] args)
{
foreach (string arg in args)
Console.WriteLine(arg);
}
Ответ №7:
Просто предположим, что вы ищете какой-то способ записать много аргументов в разные строки для каждого аргумента. Ниже приведена пара вариантов:
/// <example>
/// Console.WriteLine(new LinesItem("X", "X"));
/// </example>
public class LinesItem
{
private readonly string _lineSeparator;
private readonly object[] _items;
public LinesItem(params object[] items) : this("rn", items)
{
_items = items;
}
public LinesItem(string lineSeparator, params object[] items)
{
_lineSeparator = lineSeparator;
_items = items;
}
public override string ToString()
{
return String.Join(_lineSeparator, _items.Select(x => x.ToString()).ToArray());
}
}
//OR
/// <summary>
/// Because System.Console is a static class you cannot use Extension methods which would
/// have been nice. Instead you can simply make another static class to do extra things.
/// </summary>
/// <example>
/// ExtendedConsole.WriteLines("X", "X");
/// </example>
public static class ExtendedConsole
{
public static void WriteLines(params object[] items)
{
foreach(var item in items)
{
Console.WriteLine(item);
}
}
}
Ответ №8:
Вместо вызова строки записи вы просто вызываете Write:
Console.Write("x");
Console.Write(Environment.NewLine);
Console.Write("x");
Комментарии:
1. Хотелось вызвать один метод.