C # цвет переднего плана части объекта stringbuilder [дубликат]

Исправить исключение NullReferenceException можно с помощью Null-условных операторов в c # 6 и написать меньше кода для обработки нулевых проверок.

Он используется для проверки нуля до выполнения доступа к члену (?. ) или index (? [).

Пример

  var name = p?.Spouse?.FirstName;

эквивалентен:

    if (p != null)
    {
        if (p.Spouse != null)
        {
            name = p.Spouse.FirstName;
        }
    }

В результате имя будет нулевым когда p равно null или когда p.Spouse имеет значение null.

В противном случае имени переменной будет присвоено значение p.Spouse.FirstName.

Для получения дополнительной информации: Операторы с нулевым условием

109
задан NibblyPig 30 April 2010 в 09:40
поделиться

5 ответов

Да. См. Статью . Вот пример:

Console.BackgroundColor = ConsoleColor.Blue;
Console.ForegroundColor = ConsoleColor.White;
Console.WriteLine("White on blue.");

149
ответ дан Malice 26 August 2018 в 14:57
поделиться
  • 1
    Можно ли добавить фоновое изображение? – RollRoll 14 June 2016 в 14:43
  • 2
    Я работаю над приложением, которое запустит космический корабль в космическое пространство. Смогу ли я это сделать, если я не изменю цвет текста на экране консольного приложения? – Diego Deberdt 30 August 2017 в 06:55
  • 3
    @DiegoDeberdt Вы могли бы в прошлом, потому что все было черно-белым. Теперь вам действительно нужно быть в цвете. – Scott Langham 23 November 2017 в 12:15

Да, это возможно следующим образом. Эти цвета можно использовать в консольном приложении для просмотра некоторых ошибок красного цвета и т. Д. ...

Console.BackgroundColor = ConsoleColor.Blue;
Console.ForegroundColor = ConsoleColor.White;//after this line every text will be white on blue background
Console.WriteLine("White on blue.");
Console.WriteLine("Another line.");
Console.ResetColor();//reset to the defoult colour
0
ответ дан Chamila Maddumage 26 August 2018 в 14:57
поделиться
class Program
{
    static void Main()
    {
        Console.BackgroundColor = ConsoleColor.Blue;
        Console.ForegroundColor = ConsoleColor.White;
        Console.WriteLine("White on blue.");
        Console.WriteLine("Another line.");
        Console.ResetColor();
    }
}

Взято из здесь .

68
ответ дан Darin Dimitrov 26 August 2018 в 14:57
поделиться

Да, это легко и понятно. Определите первые цвета по умолчанию.

Console.BackgroundColor = ConsoleColor.Black;
Console.ForegroundColor = ConsoleColor.White;
Console.Clear();

Console.Clear() важно установить новые цвета консоли. Если вы не сделаете этот шаг, вы можете увидеть комбинированные цвета, когда задаете значения с помощью Console.ReadLine().

Затем вы можете изменять цвета при каждой печати:

Console.BackgroundColor = ConsoleColor.Black;
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("Red text over black.");

Когда завершите свою программу, помните, как сбросить цвета консоли на финише:

Console.ResetColor();
Console.Clear();

Теперь с netcore возникает другая проблема, если вы хотите «сохранить» пользовательский интерфейс, потому что терминал имеет разные цвета для каждой оперативной системы.

Я создаю библиотеку, которая решает эту проблему с помощью текстового формата: цвета, выравнивание и многое другое. Вы можете использовать и вносить свой вклад.

https://github.com/equiman/colorify/

Цвета для Windows (темный):

Цвета для MacOS (Light):

4
ответ дан Equiman 26 August 2018 в 14:57
поделиться

Выше комментарии являются как твердыми ответами, однако обратите внимание, что они не являются потокобезопасными. Если вы пишете на консоль с несколькими потоками, изменение цветов добавит условие гонки, которое может создать какой-то странный вид вывода. Это легко исправить:

public class ConsoleWriter
{
    private static object _MessageLock= new object();

    public void WriteMessage(string message)
    {
        lock (_MessageLock)
        {
            Console.BackgroundColor = ConsoleColor.Red;
            Console.WriteLine(message);
            Console.ResetColor();
        }
    }
}
34
ответ дан ΩmegaMan 26 August 2018 в 14:57
поделиться
  • 1
    Запись из нескольких потоков без синхронизации приведет к искажению вывода, даже если нет изменений цвета: это не просто изменение цветов, вызывающих состояние гонки – Joe 5 July 2017 в 09:41
  • 2
    @Joe Один Write вызов будет искажен , а не . См. stackoverflow.com/questions/4812508/… . Это всего лишь порядок вызовов, которые не являются «безопасными». – BatteryBackupUnit 17 October 2017 в 09:29
Другие вопросы по тегам:

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