Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
2 / 2 / 1
Регистрация: 04.11.2017
Сообщений: 57

Делегаты, интерфейсы и еще

15.12.2017, 11:14. Показов 1634. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вот читал я книгу Г.Шилдта и вот что заметил что он все понятно объясняет как работает, но не объясняет зачем это нужно
И вот у меня появилось несколько вопросов:
1.Зачем нужны интерфейсы - то есть зачем мне нужен объект который имеет доступ к классам которые его реализуют?
2.Если в классе метод помечен как static то я могу получить к нему доступ не создавая объект класса, тогда зачем мне нужны делегаты, или они могут ссылаться и не на статичные методы?
3.Зачем перечисления нужны, чтобы именовать константы?
PS:Я совсем уж дилетант в C# поэтому вопросы могут звучать совсем банально , простите за это.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.12.2017, 11:14
Ответы с готовыми решениями:

Делегаты, интерфейсы и коллекции
Уважаемые пользователи,очень прошу помочь в реализации экзамена... Проект сохранить под именем MyClientsGListTestConsol и использовать...

Свойства, интерфейсы, сигнатуры, делегаты. Просто о сложном
Начал изучать C#. Лет мне много с ООП - туго. Решил изучать азбуку по детсадовскому методу. Итак. Есть план дачного кооператива (...

Интерфейсы и делегаты. Каков функционал IEnumerable в приведенном коде
пробую так, но не очень то получается и прошу объяснить при чем тут IEnumerable namespace ConsoleApplication { class Program ...

4
Эксперт .NET
 Аватар для Usaga
14305 / 9389 / 1355
Регистрация: 21.01.2016
Сообщений: 35,401
15.12.2017, 11:23
Цитата Сообщение от Examnes Посмотреть сообщение
но не объясняет зачем это нужно
Конечно, это уже выходит за рамки учебника по языку. Это уже общие вопросы программирования.

Цитата Сообщение от Examnes Посмотреть сообщение
1.Зачем нужны интерфейсы
Затем, что появляется возможность менять реализацию на ходу и не привязываться к конкретному классу.

Цитата Сообщение от Examnes Посмотреть сообщение
Если в классе метод помечен как static то я могу получить к нему доступ не создавая объект класса, тогда зачем мне нужны делегаты, или они могут ссылаться и не на статичные методы?
Это из разряда "Зачем ёжику холодильник, если он не курит?". Делегаты могут ссылаться и на статические методы. Но какая со всем этим связь в вопросе - не ясно.

Цитата Сообщение от Examnes Посмотреть сообщение
Зачем перечисления нужны, чтобы именовать константы?
Для возможности статического анализа на этапе компиляции. Чтобы вы не могли присвоить невалидное значение. Вы "перечисляете" все возможные и компилятор следит, чтобы других вы не использовали. КОнстанты так не контролируются.
0
 Аватар для netBool
325 / 304 / 173
Регистрация: 16.11.2010
Сообщений: 1,069
Записей в блоге: 9
15.12.2017, 16:54
Цитата Сообщение от Examnes Посмотреть сообщение
2.Если в классе метод помечен как static то я могу получить к нему доступ не создавая объект класса, тогда зачем мне нужны делегаты, или они могут ссылаться и не на статичные методы?
Да, делегаты могут ссылаться на нестатичные методы. По сути они играют роль указателей на функции.
1
 Аватар для CpamJIo
28 / 28 / 15
Регистрация: 06.12.2017
Сообщений: 48
15.12.2017, 17:34
Лучший ответ Сообщение было отмечено Examnes как решение

Решение

Цитата Сообщение от Examnes Посмотреть сообщение
зачем мне нужен объект который имеет доступ к классам которые его реализуют?
Затем, что иногда сталкиваешься с ситуацией, когда есть огромное количество классов, которых что-то да объединяет.

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


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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ConsoleApplication1
{
    class Program
    {
 
        public interface IFigure
        {
            int NumberOfAngles { get; }
        }
 
 
        public class Triangle: IFigure
        {
            public int NumberOfAngles => 3;
        }
 
        public class Quad : IFigure
        {
            public int NumberOfAngles => 4;
        }
 
        public class Circle : IFigure
        {
            public int NumberOfAngles => 0;
        }
 
        static void Main(string[] args)
        {
            List<IFigure> AllFigures = new List<IFigure>();
 
            Triangle triangle = new Triangle();
            Quad quad = new Quad();
            Circle circle = new Circle();            
 
            AllFigures.Add(triangle);
            AllFigures.Add(quad);
            AllFigures.Add(circle);
 
            foreach (var figure in AllFigures)
                Console.WriteLine("Figure " + figure.GetType().Name + " has "+figure.NumberOfAngles + " angles.");
 
            Console.ReadKey();
        }
    }
}
3
1 / 1 / 1
Регистрация: 21.04.2017
Сообщений: 11
15.12.2017, 20:56
CpamJIo Спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.12.2017, 20:56
Помогаю со студенческими работами здесь

Объяснить такие понятия как делегаты, сигнатуры, интерфейсы, ковариантность, контравариантность
Всем доброго времени суток!!!! Не могли бы вы ясно объяснить такие понятия как делегаты, сигнатуры, интерфейсы, ковариантность,...

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

Интерфейсы. Выделить у классов общий интерфейс(или интерфейсы)
Задание: У классов выделить общий интерфейс ( или интерфейсы ). первый класс : using System; using...

Какими ещё способами можно ещё сделать?
Задание: Известно, что: 1 в третей степени будет=1 2 в третей степени будет=3+5 3 в третей степени будет=7+9+11 4 в третей...

Делегаты
Порылся в msdn, получил общее определение, что такое Делегат Делегат является типом ссылок на метод. Однажды назначенный делегат методу,...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это дополнительная запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru