С# Если Содержит?

Я новичок в C# и я пытаюсь написать инструкцию contains. Я хочу, чтобы процесс прочитал test переменную, и если он содержит ошибку слова, тогда распечатайте переменную, если она не содержит ошибку, а затем не печатает ошибку. Я думаю, что мой процесс близок, за исключением случаев, когда я запускаю код ниже. Я получаю сообщение об ошибке при запуске CLI.

"В экземпляре объекта не задана ссылка на объект"

Любая помощь будет оценена!

        while (true)
        {
            test = queue.GetMessage();
            if (test.AsString.Contains("error"))
            {
                Console.WriteLine(string.Format("Variable: {0}", test.AsString));

            }
            else
                Console.WriteLine(string.Format("No Error: {0}", test.AsString));
        }
+1
источник поделиться
2 ответа

Если queue.GetMessage() возвращает строку, то вам не нужен AsString. Если вы хотите преобразовать его в строку, override ToString().

while (true) {
    test = queue.GetMessage();
    if (test.ToString().Contains("error")) {
        ...
    } else { 
        ...
    }
}

Вы всегда можете гарантировать, что ToString() будет присутствовать, потому что он определен в базовом классе object. Просто убедитесь, что он возвращает что-то понятное, потому что реализации по умолчанию не могут.

+1
источник
var message = queue.GetMessage()?? string.Empty;
var formattedMessage =
            String.Format(
                (message.IndexOf("error", StringComparison.OrdinalIgnoreCase) >= 0)
                    ? "No Error: {0}"
                    : "Variable: {0}", message);
Console.WriteLine(formattedMessage);

Полезные ссылки:

  1. Уникальные способы использования оператора Null Coalescing
  2. Упростить условный формат строки
+2
источник

Посмотрите другие вопросы по меткам или Задайте вопрос