С Новым годом! Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
1 / 1 / 0
Регистрация: 16.02.2016
Сообщений: 42
1

Как вывести параметр объекта класса который находится в массиве?

09.10.2016, 09:45. Показов 2205. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
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
class Program
    {
        List<Person> pers = new List<Person>();
        static void Main(string[] args)
        {
            Program p = new Program();
            p.pers.Add(new Student("Вася", 18, "мужик", 3));
            p.pers.Add(new Student("Петя", 20, "мужик",  1));
            p.pers.Add(new Student("Маша", 19, "девушка",  3));
            p.pers.Add(new Student("Алена", 24, "девушка",  5));
            p.pers.Add(new Student("Коля", 21, "мужик",  4));
 
            p.pers.Add(new Junior("Миша", 16, "мужик", 10));
            p.pers.Add(new Junior("Оля", 13, "девушка", 7));
            p.pers.Add(new Junior("Маруся", 10, "девушка", 6));
            p.pers.Add(new Junior("Кристина", 17, "девушка", 11));
            p.pers.Add(new Junior("Дима", 16, "мужик", 10));
 
            p.pers.Add(new ZaochStd("Вова", 22, "мужик", 4, true));
            p.pers.Add(new ZaochStd("Таня", 25, "девушка", 3, true));
            p.pers.Add(new ZaochStd("Вася", 30, "мужик", 1, false));
            p.pers.Add(new ZaochStd("Даня", 23, "мужик", 1, true));
            p.pers.Add(new ZaochStd("Миша", 22, "мужик", 2, true));   
        }
  
 public void PrintGirls()
        {
            foreach (Person person in pers)           
                if (person.sex == "девушка") Console.WriteLine(person.name);                         
        }
}
Получается только выводить поля которые есть есть во всех классах наследниках, как вывести поля типа bool из класса ZaochStd?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.10.2016, 09:45
Ответы с готовыми решениями:

Как вывести составляющие объекта, ссылка на который запоминается в массиве
Доброго времени суток! Возникла небольшая проблема - не знаю как решить. Нужно создать массив...

Передача объекта класса-оболочки как параметр
Есть код: public class t_02 { static void mul(double a, double b, Double res){ res = a * b;...

Как напрямую обратиться к элементу объекта, который находится в векторе?
Только один вопрос. Как напрямую обратится к элементу объекта, который находится в векторе. ...

Как обратиться к функции класса, который находится в листе?
Как обратиться к функции класса, который находится в листе? В классе есть функция Move. ...

7
Эксперт .NET
5877 / 4754 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
09.10.2016, 09:56 2
GOLD950,
Проверить тип, привести ссылку к типу класса-наследника и обращаясь к полученной ссылке вывести значение поля.
0
1 / 1 / 0
Регистрация: 16.02.2016
Сообщений: 42
09.10.2016, 10:01  [ТС] 3
Я пытаюсь привести тип через оператор is , но все равно выдает ошибку что не удалось привести тип объекта
0
Эксперт .NET
5877 / 4754 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
09.10.2016, 10:33 4
GOLD950,
ловите пример:
Кликните здесь для просмотра всего текста
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
51
52
53
54
55
56
using System;
using System.Collections.Generic;
using System.Linq;
 
namespace ConsoleApplication6
{
    class Program
    {
        static void Main(string[] args)
        {
            List<Person> pers = new List<Person>();
            pers.Add(new Student("Вася", 18, "GUC-111"));
            pers.Add(new ZaochStd("Вова", 22, "мужик", true));
            pers.Add(new ZaochStd("Таня", 25, "девушка", true));
            pers.Add(new Student("Петя", 20, "QWER-1"));
            pers.Add(new Student("Маша", 19, "GG-1"));
            pers.Add(new ZaochStd("Вася", 30, "мужик", false));
            foreach (ZaochStd zaoStd in pers.OfType<ZaochStd>())
            {
                Console.WriteLine(zaoStd.Fio + " " + zaoStd.Age + " " + zaoStd.Work);
            }
            Console.ReadLine();
        }
    }
 
    class Person
    {
        public string Fio { set; get; }
        public int Age { set; get; }
        public Person(string fio, int age)
        {
            Fio=fio;
            Age=age;
        }
    }
 
    class Student : Person
    {
        public string Group { set; get; }
        public Student(string fio, int age, string group):base(fio, age)
        {
            Group = group;
        }
    }
 
    class ZaochStd : Person
    {
        public string Group { set; get; }
        public bool Work { set; get; }
        public ZaochStd(string fio, int age, string group, bool work) : base(fio, age)
        {
            Group = group;
            Work = work;
        }
    }
}
0
1 / 1 / 0
Регистрация: 16.02.2016
Сообщений: 42
09.10.2016, 10:49  [ТС] 5
Дацент,
Спасибо конечно но меня это есть и в классах еще присутствует переопределенный метод вывода
Мне нужно вывести имена объектов по определенным параметрам, получается только выводить те поля которые есть в родителе, а мне нужно которые есть в других классах
0
Эксперт .NET
5877 / 4754 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
09.10.2016, 10:53 6
GOLD950,
Чтобы не гадать, покажите больше кода.
0
1 / 1 / 0
Регистрация: 16.02.2016
Сообщений: 42
09.10.2016, 10:57  [ТС] 7
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
class Program
    {
        List<Person> pers = new List<Person>();
        static void Main(string[] args)
        {
            Program p = new Program();
            p.pers.Add(new Student("Вася", 18, "мужик", 3));
            p.pers.Add(new Student("Петя", 20, "мужик",  1));
            p.pers.Add(new Student("Маша", 19, "девушка",  3));
            p.pers.Add(new Student("Алена", 24, "девушка",  5));
            p.pers.Add(new Student("Коля", 21, "мужик",  4));
 
            p.pers.Add(new Junior("Миша", 16, "мужик", 10));
            p.pers.Add(new Junior("Оля", 13, "девушка", 7));
            p.pers.Add(new Junior("Маруся", 10, "девушка", 6));
            p.pers.Add(new Junior("Кристина", 17, "девушка", 11));
            p.pers.Add(new Junior("Дима", 16, "мужик", 10));
 
            p.pers.Add(new ZaochStd("Вова", 22, "мужик", 4, true));
            p.pers.Add(new ZaochStd("Таня", 25, "девушка", 3, true));
            p.pers.Add(new ZaochStd("Вася", 30, "мужик", 1, false));
            p.pers.Add(new ZaochStd("Даня", 23, "мужик", 1, true));
            p.pers.Add(new ZaochStd("Миша", 22, "мужик", 2, true));
          }
//Методы для вывода имен объектов по параметрам
  public void PrintGirls()
        {
            foreach (Person person in pers)           
                if (person.sex == "девушка") Console.WriteLine(person.name);                         
        }
 
        public void PrintMen()
        {
            foreach (Person person in pers)
                if (person.sex == "мужик") Console.WriteLine(person.name); 
        }
}
 
class Person
    {
        public string name;
        public string sex;
        public int age;
 
        public int Age
        {
            get { return age; }
            set { if (value < 0)age = 0; }
        }
        public string Sex { get; set; }
    
 
        public Person(string name, int age, string sex)
        {
            this.name = name;
            this.age = age;
            this.sex = sex;
        }
 
        public virtual void Print()
        {
            Console.WriteLine("Имя: " + name);
            Console.WriteLine("Возраст: " + age);
            Console.WriteLine("Пол: " + sex);
        }
 
        
    }
 
 class ZaochStd : Person
    {
        public int course;
        public bool work;
 
        public int Course
        {
            get { return course; }
            set
            {
                if (value < 1) course = 1;
                else if (value > 5) course = 5;
                else course = value;
            }
        }
 
        public bool Work { get; set; }
 
        public ZaochStd(string name, int age, string sex, int course,bool work)
            : base(name, age, sex)
        {
            this.course = course;
            this.work = work;
        }
 
        public override void Print()
        {
            base.Print();
            Console.WriteLine("Курс: " + course);
            Console.WriteLine("Работа: " + work);
        }
    }
0
.NET C#,ASP.NET MVC
Эксперт .NET
594 / 507 / 224
Регистрация: 16.10.2010
Сообщений: 1,902
09.10.2016, 11:15 8
Лучший ответ Сообщение было отмечено GOLD950 как решение

Решение

C#
1
2
3
4
5
6
7
8
foreach (Person person in pers) 
{
    if (person is ZaochStd)
    {
          var zaochStd = (ZaochStd) person;
          Console.WriteLine(zaochStd.Work);
    } 
}
Вариант номер 2

C#
1
2
3
4
5
foreach (Person person in pers) 
{
     var zaochStd = person as ZaochStd
     zaochStd?? Console.WriteLine(zaochStd.Work);
}
1
09.10.2016, 11:15
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.10.2016, 11:15
Помогаю со студенческими работами здесь

Класс: Как правильно из класса который находится выше передать свойство?
Итак! В классе X имеется экземпляр класса Y, и свойство PropX. В классе Y имеется несколько...

Нужно вывести в окно текст, который подали, как параметр командной строки
Приветствую господ форумчан, возникла такая проблема) нужно вывести в окно винапи текст, который...

Есть 3 объекта с классом obj; вывести для каждого из них вывести параметр i
Надо провести манипуляции с переменными всех объектов с определенным классом. Например есть 3...

Вызвать метод класса, который находится в другом потоке
Hello, World! :) Зачастил я сегодня с вопросами... В общем у меня есть окно (класс,...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Как написать микросервис на C# с Kafka, MediatR, Redis и GitLab CI/CD
InfoMaster 15.01.2025
В современной разработке программного обеспечения микросервисная архитектура стала стандартом де-факто для создания масштабируемых и гибких приложений. Этот подход позволяет разделить сложную систему. . .
Что такое CQRS и как это реализовать на C# с MediatR
InfoMaster 15.01.2025
Концепция CQRS и её роль в современной разработке В современном мире разработки программного обеспечения архитектурные паттерны играют ключевую роль в создании масштабируемых и поддерживаемых. . .
Как настроить CI/CD с Azure DevOps
InfoMaster 15.01.2025
CI/ CD, или непрерывная интеграция и непрерывное развертывание, представляет собой современный подход к разработке программного обеспечения, который позволяет автоматизировать и оптимизировать процесс. . .
Как настроить CI/CD с помощью Jenkins
InfoMaster 15.01.2025
Введение в CI/ CD и Jenkins В современной разработке программного обеспечения непрерывная интеграция (CI) и непрерывная доставка (CD) стали неотъемлемыми элементами процесса создания качественных. . .
Как написать микросервис на Go/Golang с Kafka, REST и GitHub CI/CD
InfoMaster 14.01.2025
Определение микросервиса, преимущества использования Go/ Golang Микросервис – это архитектурный подход к разработке программного обеспечения, при котором приложение состоит из небольших, независимо. . .
Как написать микросервис с нуля на C# с RabbitMQ, CQRS, Swagger и CI/CD
InfoMaster 14.01.2025
В современном мире разработки программного обеспечения микросервисная архитектура стала стандартом де-факто для создания масштабируемых и гибких приложений. Этот архитектурный подход предполагает. . .
Как создать интернет-магазин на PHP и JavaScript
InfoMaster 14.01.2025
В современном мире электронная коммерция стала неотъемлемой частью бизнеса. Создание собственного интернет-магазина открывает широкие возможности для предпринимателей, позволяя достичь большей. . .
Как написать Тетрис на Ассемблере
InfoMaster 14.01.2025
Тетрис – одна из самых узнаваемых и популярных компьютерных игр, созданная в 1984 году советским программистом Алексеем Пажитновым. За прошедшие десятилетия она завоевала симпатии миллионы людей по. . .
Как создать игру "Танчики" на Unity3d и C#
InfoMaster 14.01.2025
Разработка игр – это увлекательный процесс, сочетающий в себе творчество и технические навыки. В этой статье мы рассмотрим создание классической игры "Танчики" с использованием Unity3D и языка. . .
Организую платный онлайн микро-курс по доработке Android-клиента Telegram
_Ivana 14.01.2025
Официальная версия и распространенные форки не полностью устраивают? Сделай свою кастомную версию клиента! 4 занятия по 2 часа (2 недели пн, ср 19:00-21:00 по Москве). Первое вводное занятие. . .
Как создать приложение для фитнеса для iOS/iPhone на Kotlin
InfoMaster 14.01.2025
Создание собственного фитнес-приложения — это не только захватывающий, но и полезный процесс, ведь оно может стать вашим верным помощником на пути к здоровому и активному образу жизни. В современных. . .
Как создать приложение магазина для iOS/iPhone на Swift
InfoMaster 14.01.2025
Введение в разработку iOS-приложений Разработка приложений для iPhone и других устройств на базе iOS открывает огромные возможности для создания инновационных мобильных решений. В данной статье мы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru