Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
Examnes
2 / 2 / 1
Регистрация: 04.11.2017
Сообщений: 39
1

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

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

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

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

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

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

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

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

4
Usaga
Эксперт .NET
5129 / 3489 / 615
Регистрация: 21.01.2016
Сообщений: 13,853
Завершенные тесты: 2
15.12.2017, 11:23 2
Цитата Сообщение от Examnes Посмотреть сообщение
но не объясняет зачем это нужно
Конечно, это уже выходит за рамки учебника по языку. Это уже общие вопросы программирования.

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

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

Цитата Сообщение от Examnes Посмотреть сообщение
Зачем перечисления нужны, чтобы именовать константы?
Для возможности статического анализа на этапе компиляции. Чтобы вы не могли присвоить невалидное значение. Вы "перечисляете" все возможные и компилятор следит, чтобы других вы не использовали. КОнстанты так не контролируются.
0
netBool
248 / 250 / 149
Регистрация: 16.11.2010
Сообщений: 941
Записей в блоге: 9
Завершенные тесты: 5
15.12.2017, 16:54 3
Цитата Сообщение от Examnes Посмотреть сообщение
2.Если в классе метод помечен как static то я могу получить к нему доступ не создавая объект класса, тогда зачем мне нужны делегаты, или они могут ссылаться и не на статичные методы?
Да, делегаты могут ссылаться на нестатичные методы. По сути они играют роль указателей на функции.
1
CpamJIo
28 / 28 / 15
Регистрация: 06.12.2017
Сообщений: 48
Завершенные тесты: 1
15.12.2017, 17:34 4
Лучший ответ Сообщение было отмечено 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
юрий2017
1 / 1 / 1
Регистрация: 21.04.2017
Сообщений: 11
15.12.2017, 20:56 5
CpamJIo Спасибо!
0
15.12.2017, 20:56
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.12.2017, 20:56

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

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

Делегаты
Объясните пожалуйста, доходчиво и &quot;по-детски&quot;: как использовать, для чего нужны, в каких именно...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru