Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 19.11.2014
Сообщений: 78

Что означает строка кода "Protected ConsoleColor color"

20.04.2015, 09:24. Показов 1545. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
using System;
 
namespace Lessons_3
{
    class Program
    {
        static void Main()
        {
            ColorPrinter print = new ColorPrinter(ConsoleColor.Yellow);
            print.Print("Hello");
 
            Printer printUp = print;
            printUp.Print("Hello");
 
            ColorPrinter print1 = new ColorPrinter(ConsoleColor.Red);
            print1.Print("Hello");
           
            // Delay.
            Console.ReadKey();
        }
    }
 
    class Printer
    {
        protected ConsoleColor color;
 
        public Printer(ConsoleColor color)
        {
            this.color = color;
        }
 
                            //Console.ForegroundColor = ConsoleColor.White;
 
        public virtual void Print(string value)
        {
            Console.ForegroundColor = color;
            Console.WriteLine(value);
            Console.ForegroundColor = ConsoleColor.Gray;
        }
    }
 
    class ColorPrinter : Printer
    {
        public ColorPrinter(ConsoleColor color)
            : base(color)
        {
 
        }
    }
}
не понятна строка:
protected ConsoleColor color;
Console.ForegroundColor = color;
и не понятна роль класса ColorPrinter и его конструктора

Моя задача просто понять как это работает...я никому ничего не делаю...просто учусь...
(я когда вижу это код просто котелок закипает)
Спасибо заранее.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.04.2015, 09:24
Ответы с готовыми решениями:

Что означает строка кода?
Возник такой вопрос, есть код программы которая в строке заменяет арабские цифры в словесные литералы: var text = Console.ReadLine(); ...

Что означает строка кода с => ?
public string GetName() => Name; что означает эта строка и вот эта строка: public void SetName(string Name)

Что означает следующая строка кода
int her = page ?? 1

13
48 / 48 / 10
Регистрация: 22.02.2012
Сообщений: 137
20.04.2015, 09:51
Цитата Сообщение от jashik Посмотреть сообщение
protected ConsoleColor color;
Это поле класса. Как бы переменная внутри класса.
"color" - имя поля.
"ConsoleColor" - тип данных, цвет консоли.
"protected" - область видимости, подробнее - тут
1
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
20.04.2015, 09:52
Цитата Сообщение от jashik Посмотреть сообщение
protected ConsoleColor color;
Это защищенное поле типа ConsoleColor.
Цитата Сообщение от jashik Посмотреть сообщение
Console.ForegroundColor = color;
Установка, насколько я помню, цвета шрифта вывода консоли.
Цитата Сообщение от jashik Посмотреть сообщение
не понятна роль класса ColorPrinter и его конструктора
Наследник от класса Printer(). В конструкторе принимает параметр типа ConsoleColor и передает его конструктору родительского класса.
Его роль - получить аргумент в конструкторе (цвет вывода) и при вызове метода (унаследованного от родителя) вывести в консоль строку.
1
0 / 0 / 0
Регистрация: 19.11.2014
Сообщений: 78
20.04.2015, 09:58  [ТС]
Спасибо за ответы!
Эта запись: protected ConsoleColor color;
она фантастична по своей простоте......
Извините что сразу не написал как поставлена задача:
Задание
Используя Visual Studio, создайте проект по шаблону Console Application.
Требуется:
Создайте класс Printer.
В теле класса создайте метод void Print(string value), который выводит на экран значение аргумента.
Реализуйте возможность того, чтобы в случае наследования от данного класса других классов, и вызове соответствующего метода их экземпляра, строки, переданные в качестве аргументов методов, выводились разными цветами.
Обязательно используйте приведение типов.
Т.е. я правильно понимаю что класс ColorPrinter нам необходим чтобы отработать UpCast и DownCast и
поле color типа ConsoleColor нам нужно чтобы мы сразу подставляли эту "конструкцию" в метод который выводит текст на консоль???
0
48 / 48 / 10
Регистрация: 22.02.2012
Сообщений: 137
20.04.2015, 10:17
Цитата Сообщение от jashik Посмотреть сообщение
Реализуйте возможность того, чтобы в случае наследования от данного класса других классов, и вызове соответствующего метода их экземпляра, строки, переданные в качестве аргументов методов, выводились разными цветами.
Я думаю имелось в виду что-то типа этого:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class YellowColorPrinter : Printer
{
    public YellowColorPrinter()
        : base(ConsoleColor.Yellow)
    {
 
    }
}
 
 
class RedColorPrinter : Printer
{
    public RedColorPrinter()
        : base(ConsoleColor.Red)
    {
 
    }
}
Добавлено через 2 минуты
Цитата Сообщение от jashik Посмотреть сообщение
отработать UpCast и DownCast
Полёт вашей мысли мне не понятен, можете пояснить?
1
0 / 0 / 0
Регистрация: 19.11.2014
Сообщений: 78
20.04.2015, 10:24  [ТС]
"Обязательно используйте приведение типов. " => Printer printUp = print;
я вот только до сих пор понять не могу!!!!!!!! это UpCast или DownCast (ну тупой я.....ну что со мной поделать)

да я забыл сказать - код который написан выше - это настоящее решение задачи....это не моя "выдумка"
0
103 / 90 / 19
Регистрация: 15.04.2015
Сообщений: 353
20.04.2015, 10:26
Условия задачи несколько непонятные. У вас есть класс Printer, который и так выводит в консоль текст того цвета, который был задан в конструкторе. Я так понял, в классе Printer не должно быть вывода цвета, то есть, пустой конструктор, в котором вашей переменной color задается значение по умолчанию. И уже в классах, наследуемых от Printer, должна быть возможность выбирать цвет (вот тут непонятно - должен ли цвет задаваться в конструкторе, отдельным методом, или вообще в методе, выводящем текст). В вашем коде ColorPrinter и Printer не отличаются практически ничем.

Добавлено через 1 минуту
Если просят приведение типов, значит, вам нужно создать экземпляр цветного принтера, и присвоить его переменной типа Printer.
0
0 / 0 / 0
Регистрация: 19.11.2014
Сообщений: 78
20.04.2015, 10:33  [ТС]
lentinant - у
нет ...дело в том что по курсу который я прохожу текущей темой является приведение типов (ну и заодно наследование повторяем)
0
48 / 48 / 10
Регистрация: 22.02.2012
Сообщений: 137
20.04.2015, 10:34
Цитата Сообщение от jashik Посмотреть сообщение
C#
1
2
ColorPrinter print = new ColorPrinter(ConsoleColor.Yellow);
Printer printUp;
Цитата Сообщение от jashik Посмотреть сообщение
Обязательно используйте приведение типов.
Примерно так:
C#
1
printUp = print as Printer;
1
0 / 0 / 0
Регистрация: 19.11.2014
Сообщений: 78
20.04.2015, 10:36  [ТС]
"Обязательно используйте приведение типов. " => Printer printUp = print;
я вот только до сих пор понять не могу!!!!!!!! это UpCast или DownCast (ну тупой я.....ну что со мной поделать)

Добавлено через 1 минуту
FesS92 !!!!
ну погодите !!! куда Вы торопитесь!!! мы еще не проходили AS и IS ....что вы "набросились" на маленького.....

а кстати Ваш ColorPrinter мне понравился....классный ColorPrinter
0
48 / 48 / 10
Регистрация: 22.02.2012
Сообщений: 137
20.04.2015, 10:43
C#
1
printUp = (Printer)print;
Другого способа приведения типов без as и is даже и не знаю)
0
0 / 0 / 0
Регистрация: 19.11.2014
Сообщений: 78
20.04.2015, 10:46  [ТС]
Для ссылочных типов явное приведение необходимо, если нужно выполнить преобразование из базового типа в производный тип:

C#
1
2
3
4
5
6
7
8
9
10
11
// Create a new derived type.
Giraffe g = new Giraffe();
 
// Implicit conversion to base type is safe.
[B][U]Animal a = g;[/U][/B]
 
// Explicit conversion is required to cast back
// to derived type. Note: This will compile but will
// throw an exception at run time if the right-side
// object is not in fact a Giraffe.
Giraffe g2 = (Giraffe) a;
это с сайта ..сами знаете какого


"Обязательно используйте приведение типов. " => Printer printUp = print;
я вот только до сих пор понять не могу!!!!!!!! это UpCast или DownCast (ну тупой я.....ну что со мной поделать)
0
48 / 48 / 10
Регистрация: 22.02.2012
Сообщений: 137
20.04.2015, 10:50
Цитата Сообщение от jashik Посмотреть сообщение
Printer printUp = print;
DownCast
1
0 / 0 / 0
Регистрация: 19.11.2014
Сообщений: 78
20.04.2015, 10:53  [ТС]
Спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.04.2015, 10:53
Помогаю со студенческими работами здесь

Что означает строка кода?
Что делает эта строка current->n%2 == 1 for(current = Head->Right; current != Head; current = current->Right){ ...

Что означает строка кода?
Что значит выражение ниже? Как можно умножать на логическое выражение? A*(A>0)*(B>0)

Что означает данная строка кода?
Здравствуйте, вот код всей программы: package com.company; import java.util.Scanner; public class Retirement { public...

Что означает эта строка кода?
msgid = '<%s.%s.%s%s@%s>' % (utcdate, pid, randint, idstring, domain)в C:\Python27\lib\site-packages\django\core\mail\message.py на...

Что означает строка кода cout.setf(ios_base::fixed)
Что это значит? cout.setf(ios_base::fixed);


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru