Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.98/55: Рейтинг темы: голосов - 55, средняя оценка - 4.98
7 / 6 / 6
Регистрация: 20.03.2011
Сообщений: 350

Приведите пример использования интерфейсов

28.12.2012, 14:07. Показов 10316. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Любую задачу с интерфейсами, по моему мнению, гораздо проще решать используя статические классы или методы. Копирование классов решается тем, что вместо классов объявляем структуры.
А можете привести пример где интерфейсы действительно упрощают задачу в отличии от вышеназванных методов?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.12.2012, 14:07
Ответы с готовыми решениями:

Приведите пример использования в операторе if оператора then
Пожалуйста, приведите пример использования в операторе if оператора then. Вот вроде бы есть такая конструкция, но в C# как-то не...

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

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

21
14 / 11 / 1
Регистрация: 01.11.2010
Сообщений: 25
29.12.2012, 13:34
Студворк — интернет-сервис помощи студентам
В реальном программирование, когда разрабатываются методы по работе с объектами, или объекты по работе с объектами - программист выбирает, какие ограничения накладывать на тип? Можно-ли требовать чтобы это был наследник "нашего" класса, или мы такого потребовать не можем, и тогда мы требуем итерфейс.

Но polsok, вы бьёте сразу в корень! Да, действительно - как реализовывать кряк в неутках? С нуля писать аналогичный код? Ужасно! И тут начинается композиция. Вы можете сделать отдельный объект "крякатель", наследников которого упакуете в уток, или вернуться к статическим методам... Здесь начинается архитектура, паттерны и самый сок!

Но надо помнить: Всё это раскрывается в реально сложных и объёмных задачах. в тестовых примерах с утками, мне сложно доказать даже себе, что нужно более одного класса-))
0
2 / 2 / 0
Регистрация: 18.08.2015
Сообщений: 48
20.12.2018, 10:55
Цитата Сообщение от polsok Посмотреть сообщение
А можете привести пример где интерфейсы действительно упрощают задачу в отличии от вышеназванных методов?
Приведу пример как я сам пришел к использованию интерфейса:

допустим у вас есть несколько разных UserControl-ов, на которых вы через дизайнер накидываете какие то компоненты и т.п.
[ Например это компоненты которые через DataBinding привязываются в к данным ]

И у каждого из них есть характерное свойство, которое должно быть обязательно в каждом конкретном UserControl-е.
[ В данном примере это будет какой нибудь "DataSourse" в котором будет хранится объект DataBinding ]

Допустим у вас инициализированы несколько таких UserControl-ов,
но должен быть какой то текущий (какой именно мы не знаем), и чтобы нам нужно обратится к его свойству "DataSourse" нужно представить объект как этот интервейс (CurrentUserControl as IMyUserControl).DataSourse

и тут мне помог интерфейс, см. пример:
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
    //интерфейс с объим параметром
    public interface IMyControl {
        BindingSource DataSourse { get; set; }
    }
 
    //первый UserControl
    public partial class MyControl_textBox : UserControl, IMyControl
    {
        public MyControl_textBox()
        {
            InitializeComponent(); //тут инициализируется textBox1, и прочее
        }
        private BindingSource _DataSourse;
        public BindingSource DataSourse { 
            get { return _DataSourse; } 
            set {
                _DataSourse = value;
                textBox1.DataBindings.Add(new System.Windows.Forms.Binding("Text", DataSourse, "Column1"));
            } 
        }
    }
 
    //второй UserControl
    public partial class IMyControl_numericUpDown : UserControl, IMyControl
    {
        public IMyControl_numericUpDown()
        {
            InitializeComponent(); //тут инициализируется numericUpDown1, и прочее
        }
        private BindingSource _DataSourse;
        public BindingSource DataSourse {
            get { return _DataSourse; }
            set {
                _DataSourse = value;
                numericUpDown1.DataBindings.Add(new System.Windows.Forms.Binding("Value", DataSourse, "Column1"));
            }
        }
    }
 
    //класс в котором работаем
    public partial class Form1 
    {
        //Вот тут важный момент, мы не знаем что тут будет MyControl_textBox или IMyControl_numericUpDown
        //поэтому пишем тип UserControl, но у него нет свойства DataSourse
        //чтобы получить это свойство, можно сделать так (CurrentControl as IMyControl).DataSourse
        private UserControl CurrentControl { get; set; }
 
        private BindingSource SourceOfCurrent {
            get { return (CurrentControl as IMyControl).DataSourse; }
            set { (CurrentControl as IMyControl).DataSourse = value; }
        }
 
        public Form1()
        {
            InitializeComponent(); //тут инициализируется myControl_textBox1, myControl_numericUpDown1, и прочее
            CurrentControl = myControl_textBox1;
        }
 
        //смена текущего UserControl-а 
        private void button1_Click(object sender, EventArgs e) {
            CurrentControl = myControl_textBox1;
        }
        private void button2_Click(object sender, EventArgs e)
        {
            CurrentControl = myControl_numericUpDown1;
        }
    }
Сделать какой то класс с этим свойством, и потом от него наследоваться не подходит по нескольким причинам:
  • в свойстве DataSourse в "set" у нас выполняются разные действия т.е. его уже не сделать общим
  • и в таком случае будет невозможно настроить UserControl через Дизайнер среды разработки.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.12.2018, 10:55

Приведите какой-нибудь пример использования файлов для создания объектов класса
Дано задание создать некоторый базовый класс и неск. классов наследников. А затем создать коллекцию объектов классов-наследников. Для...

приведите пример
мне подсказали, как составить программу, но не могу 8( приведите пример хоть на языке C#, пожалуйста Вот алгоритм: 1) составить...

Приведите пример c# к переменному int
Приведите пожалуйста пример на языке c# к переменному int никак не могу понять как она работает

Приведите простой пример двойных циклов: while или for
Здравствуйте! Приведите пожалуйста простой пример двойных циклов: while или for. Буду очень благодарен.

Приведите пример прямого рекурсивного обхода дерева
Есть обычное иерархическое дерево (Control Tree). Как рекурсивно в прямом порядке пройтись по всем вложенным ветвям от корня? Уровень...


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

Или воспользуйтесь поиском по форуму:
22
Ответ Создать тему
Новые блоги и статьи
тв 16 бой ии
anaschu 27.07.2026
Великий Перелом ИИ: Как уравнения ОДУ Radau дожали цензурные фильтры Алисы Фиксируем в мемофонде Теории Всего беспрецедентный факт в истории ИИ-зондирования. В затяжном многораундовом. . .
мв 15. непроверенное, возможно, глюк
anaschu 27.07.2026
НАУЧНО-АНАЛИТИЧЕСКИЙ ОТЧЕТ. РАЗДЕЛ 1. 1: «НАУКА» (РАСШИРЕННАЯ СТЕХИОМЕТРИЧЕСКАЯ И ГЕНЕТИЧЕСКАЯ ВЕРСИЯ)Тема: Теоретическое обоснование инвариантности 19-мерного тензорного ядра непрерывных ОДУ и. . .
Очистка реквизитов и табличных частей документа при копировании
Maks 26.07.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРаботу", разработанного в КА2. Задача: Заменить алгоритм запрета копирования документов для сотрудников с ролью "Стажер",. . .
Доктрина интенционального знания - Доктрина для портала "Срез".
Hrethgir 25.07.2026
Может найдётся кто захочет оценить доктрину. . . Написания правил участия для меня роскошь, требующая лимита времени, поэтому все сообщения не прошедшие модерацию будут видны только участникам портала,. . .
сукцессия 44. Решил подать на припринт в межународные сервисы препринтов. Но нужно одобрение от ученых
anaschu 25.07.2026
Английский вариант. Пока кто то не одобрит мою личность, мне не получиться это опубликовать на препринте. Но заявку на публикацию статьи я сегодня подам.
сукцессия 43. Вторая научная статья за месяц- прайминг и гатгил
anaschu 25.07.2026
две стороны одной монеты
Более приземисто - Эстафету хвоста в .cdl (деревья эстафеты в сад).
Hrethgir 24.07.2026
В будущем, после написания блока инверсии обхода дерева (эстафеты хвоста), я планирую вернуться к нашему прошлому разговору о том, обладают ли знания целеполаганием. Тогда я пришел к выводу, что. . .
Вот представьте что вам дали бессмертие.
kumehtar 24.07.2026
Вот представьте что вам дали бессмертие, ничего более не меняя. Вообще ничего, только бессмертие в нынешнем виде. Рады были бы? Что бы вы тут делали всё это время? Никакой пенсии. Никакого нового. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru