2016-09-12 4 views
1

Я хочу иметь возможность распечатывать три типа сообщений на консоль: предупреждения, ошибки и успех. Для этого каждый раз мне приходилось менять ForegroundColor консоли на желтый, красный или зеленый, распечатывать сообщение и менять цвет назад. Чтобы сделать это быстрее, я решил создать класс (скажем, Printer), который имеет три метода: Warning(message), Error(message), Success(message). Теперь я задаю вопрос: должен ли Printer быть struct или class? Я не планирую иметь больше полей/методов в этом классе.Должен ли я использовать класс или структуру для обертывания методов?

+0

Похоже, это может быть даже статический класс. – juharr

+0

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

+0

Ну, если каждый метод просто изменяет цвет текста консоли, затем печатает этот метод, а затем меняет его, тогда все данные статичны (цвет основанный на методе, и сообщение передается в). Или спросите себя, создали ли несколько экземпляров 'Printer', как бы они отличались друг от друга? – juharr

ответ

4

На самом деле это звучит как статический класс.

public static class Printer 
{ 
    public static void Warning(string message) 
    { 
     var currentColor = Console.ForegroundColor; 
     Console.ForegroundColor = ConsoleColor.Yellow; 
     Console.WriteLine(message); 
     Console.ForegroundColor = currentColor; 
    } 

    //Other similar methods here 
} 

Тогда вы бы назвали как этот

Printer.Warning("This is a warning");