powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / c# Интерфейсы способы применения
43 сообщений из 43, показаны все 2 страниц
c# Интерфейсы способы применения
    #38644434
Nechto
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте.

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

[spoiler]
Сошлюсь на этот видео урок
YouTube Video
...
Рейтинг: 0 / 0
c# Интерфейсы способы применения
    #38644438
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а) Интерфейсы могут быть применены в РАЗНЫХ классах, а не только в каком-то конкретном, что делает универсальным зоопарки очень разных классов - пример - интерфейс IEnumerable - с помощью него, например, можно пройти foreach-ем массив, тектовую строку, коллекцию, словарь и что угодно, в том числе, ты можешь реализовать IEnumerable на собственном любом классе и потом обходить его foreach-ем или Linq-запросами...

б) Класс может наследовать только одному базовому классу, но любому количеству интерфейсов
...
Рейтинг: 0 / 0
c# Интерфейсы способы применения
    #38644451
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nechto,
На самом деле, про интерфейсы столько замысловатых повествований в сети и в учебниках, и что бы вдуплиться
не один день уйдет у новичка.
Вообще то с интерфейсами все просто, у нас запрещено множественное наследование в коде пользователя.
то есть, Вы без труда можете отнаследоваться от абстрактного класса, а от двух? не получится.
Вот тут и создатели пошли на такую хитрость, второй и последующие абстрактные классы они заменили словом интерфейс.
а в самих классах убрали методы с реализацией и конструктор, оставив только абстрактные методы.
то есть интерфейс это такой же абстрактный класс, без методов с реализацией и конструктора, ну естественно финализатор там никто не видел, не верите, откройте байт код и посмотрите, то есть им там можно, множественные наследования, а нам нельзя.Хм...
Если нет конструктора, то естественно конструктор этого абстрактного класса и не будет задействован с стеке вызовов конструкторов
и все увянет на последнем вызове конструктора объекта ( мы говорим про ссылочные типы)
Хотя можно и создать объект и без вызова конструктора
По второму, я согласен с вами ( хотя фильм не смотрел) можно и было бы запихнуть и в базовый класс..
Но бываю в жизни и такие моменты, когда нужно реализовывать И.
например foreach требует что бы левый элемент реализовывал IEnumerable
Ну уж если пошел разговор о IEnumerable
Вспомним про IDisposable вы то его никуда не запихнете в базовый класс.
У вас тогда не встанет директива using
да бог с ней, у вас и не вызовется автовызов исполнения этого интерфейса.
ну не используя using вы додавите Dispose() через базовый класс.
А в другом случае ( вообще два случая авто вызова ( классических)IDisposable )
вообще никакой эрекции не будет..
Как то так..
...
Рейтинг: 0 / 0
c# Интерфейсы способы применения
    #38644519
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степи то есть интерфейс это такой же абстрактный класс
Да ну, ерунда какая. Если что-то является классом, то это подразумевает реализацию класса, и наследование этой реализации (даже если реализация вырожденная). А интерфейс - это просто контракт, объявляющий, что если некий класс реализует этот интерфейс, то этот класс обязан иметь методы, объявленные в интерфейсе. И все.
...
Рейтинг: 0 / 0
c# Интерфейсы способы применения
    #38644526
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры Павловны,
интерфейс это обыкновенный тип и реализован в виде класса, тоже самое и структуры, имеют реализацию класса
только запечатанного и наследующего valueType, а то о чем вы говорите - это матрица
есть люди которые пишут в байт коде им множественное наследование доступно, на хабре это один перец показательно исполнил..
...
Рейтинг: 0 / 0
c# Интерфейсы способы применения
    #38644533
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры Павловныинтерфейс - это просто контракт,
не совсем просто - явная реализация интерфейса - тому пример
...
Рейтинг: 0 / 0
c# Интерфейсы способы применения
    #38644559
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилСон Веры Павловныинтерфейс - это просто контракт,
не совсем просто - явная реализация интерфейса - тому примерявная реализация интерфейса это класс.

Сон Веры Павловны, Shocker.Pro +1
Где-то в степи, Изопропил -1
...
Рейтинг: 0 / 0
c# Интерфейсы способы применения
    #38644573
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariyявная реализация интерфейса это класс
что сказать то хотел?
...
Рейтинг: 0 / 0
c# Интерфейсы способы применения
    #38644601
Nechto
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Proа)Интерфейсы могут быть применены в РАЗНЫХ классах
Shocker.Proа)можешь реализовать IEnumerable
Сон Веры Павловны а)А интерфейс - это просто контракт, объявляющий, что если некий класс реализует этот интерфейс, то этот класс обязан иметь методы, объявленные в интерфейсе. И все.

Значит для этого создавались интерфейсы?
...
Рейтинг: 0 / 0
c# Интерфейсы способы применения
    #38644616
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,
авторГде-то в степи, Изопропил -1
а что не нравится ? можно было бы и без меня привести утиный тест между интерфейсом и абстрактным классом никуда не заглядывая
если уж заговорили про утиную типизацию, то кричать надо на строчку
степьнапример foreach требует что бы левый элемент реализовывал IEnumerable
или на
Shocker.Pro ты можешь реализовать IEnumerable на собственном любом классе и потом обходить его foreach-ем
в общем то эрекция происходит не на IEnumerable , а на IEnumerator GetEnumerator()
Код: 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.
 internal class Program
    {
        private static void Main(string[] args)
        {
            var test = new Test();
            try
            {
                foreach (var VARIABLE in test)
                {

                }
            }
            catch { }
            Console.Read();
        }
    }

    class Enumerator : IEnumerator, IDisposable
    {

        public object Current
        {
            get { throw new NotImplementedException(); }
        }

        public bool MoveNext()
        {
            return true;
        }

        public void Reset()
        {
            throw new NotImplementedException();
        }

        public void Dispose()
        {
            Console.WriteLine("dddddddddddddddddd");
        }
    }

    class Test
    {
        public IEnumerator GetEnumerator()
        {
            return new Enumerator();
        }
    }


тут к стати показан второй классический авто вызов IDisposable
...
Рейтинг: 0 / 0
c# Интерфейсы способы применения
    #38644621
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nechto,

авторЗначит для этого создавались интерфейсы
вообще эволюция познания поэтапна , в начале берется первоначальное представление ( простое для понимания)( лично я дал считаю именно такое), а потом с опытом и приобретениями оно обрастает, или отвергается полностью в замен истины.
ну это все субъективно и имхо..
...
Рейтинг: 0 / 0
c# Интерфейсы способы применения
    #38644636
kmaw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
повышение уровня абстракции. все ООП на этом построено. в интерфейсах задается поведение. например, некоторые сущности умеют выполнять какое-то действие1. эти сущности может обрабатывать некоторая общая инфраструктура. она ничего не знает о деталях реализации этих сущностей, а тольео знает о том, что они выполняют действие1
...
Рейтинг: 0 / 0
c# Интерфейсы способы применения
    #38644670
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилAntonariyявная реализация интерфейса это класс
что сказать то хотел?а сам что хотел?
ИзопропилСон Веры Павловныинтерфейс - это просто контракт,
не совсем просто - явная реализация интерфейса - тому примеро чем этот пассаж?
"интерфейс это не просто контракт и класс тому пример" — эта мысль настолько глубока, что ее смысл пропал где-то на дне.
...
Рейтинг: 0 / 0
c# Интерфейсы способы применения
    #38644677
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NechtoСон Веры Павловныа)А интерфейс - это просто контракт, объявляющий, что если некий класс реализует этот интерфейс, то этот класс обязан иметь методы, объявленные в интерфейсе. И все.

Значит для этого создавались интерфейсы?Да.

Использование интерфейсов — один из вариантов обеспечения полиморфизма в объектных языках и средах. Все классы, реализующие один и тот же интерфейс, с точки зрения определяемого ими поведения, ведут себя внешне одинаково. Это позволяет писать обобщённые алгоритмы обработки данных, использующие в качестве типов параметры интерфейсов, и применять их к объектам различных типов, всякий раз получая требуемый результат.
...
Рейтинг: 0 / 0
c# Интерфейсы способы применения
    #38644773
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как один из вариантов, зачем нужны интерфейсы - http://msdn.microsoft.com/en-us/magazine/cc337885.aspx (если на английском разметка кода вся "в кучу" - перейди на русский). В частности

авторDependency Inversion

You can decouple your higher-level component, InvoiceService, from its lower-level dependencies by interacting with your dependencies via interfaces rather than their concrete classes:
...
Рейтинг: 0 / 0
c# Интерфейсы способы применения
    #38644775
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Правда, стоит сказать, что инвесию можно получить и через базовые классы (через абстрактные базовые классы). Но это я в качестве примера же привёл.
...
Рейтинг: 0 / 0
c# Интерфейсы способы применения
    #38644778
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степиNechto,
На самом деле, про интерфейсы столько замысловатых повествований в сети и в учебниках, и что бы вдуплиться
не один день уйдет у новичка.
Вообще то с интерфейсами все просто, у нас запрещено множественное наследование в коде пользователя.
то есть, Вы без труда можете отнаследоваться от абстрактного класса, а от двух? не получится.
Вот тут и создатели пошли на такую хитрость, второй и последующие абстрактные классы они заменили словом интерфейс.
а в самих классах убрали методы с реализацией и конструктор, оставив только абстрактные методы.
то есть интерфейс это такой же абстрактный класс, без методов с реализацией и конструктора, ну естественно финализатор там никто не видел, не верите, откройте байт код и посмотрите, то есть им там можно, множественные наследования, а нам нельзя.Хм...
Если нет конструктора, то естественно конструктор этого абстрактного класса и не будет задействован с стеке вызовов конструкторов
и все увянет на последнем вызове конструктора объекта ( мы говорим про ссылочные типы)
Хотя можно и создать объект и без вызова конструктора
По второму, я согласен с вами ( хотя фильм не смотрел) можно и было бы запихнуть и в базовый класс..
Но бываю в жизни и такие моменты, когда нужно реализовывать И.
например foreach требует что бы левый элемент реализовывал IEnumerable
Ну уж если пошел разговор о IEnumerable
Вспомним про IDisposable вы то его никуда не запихнете в базовый класс.
У вас тогда не встанет директива using
да бог с ней, у вас и не вызовется автовызов исполнения этого интерфейса.
ну не используя using вы додавите Dispose() через базовый класс.
А в другом случае ( вообще два случая авто вызова ( классических)IDisposable )
вообще никакой эрекции не будет..
Как то так..
Жопа с интерфейсами (а точнее, с наследованием в C#) в том, что, если мне нужно унаследовать реализацию , а не сигнатуру, то придётся городить длинный хвост наследования "по штучке" из классов. Либо копипастить реализацию интерфейсов из тех классов, в которых находится нужная мне. Или есть методы лучше?
...
Рейтинг: 0 / 0
c# Интерфейсы способы применения
    #38644780
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я бы даже сказал, что интерфейсы всегда абстрактны, в то время как абстрактные классы хотя бы могут иметь конкретную реализацию (т. е. не в полной мере абстрактны).
...
Рейтинг: 0 / 0
c# Интерфейсы способы применения
    #38644781
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320Жопа с интерфейсами (а точнее, с наследованием в C#) в том, что, если мне нужно унаследовать реализацию , а не сигнатуру, то придётся городить длинный хвост наследования "по штучке" из классов. Либо копипастить реализацию интерфейсов из тех классов, в которых находится нужная мне. Или есть методы лучше?
Ну или заниматься "внедрением зависимостей".
...
Рейтинг: 0 / 0
c# Интерфейсы способы применения
    #38644841
zz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nechto, вот это определение наиболее точно:
Сон Веры Павловныа)А интерфейс - это просто контракт, объявляющий, что если некий класс реализует этот интерфейс, то этот класс обязан иметь методы, объявленные в интерфейсе. И все.

А вот еще видеоурок по теме, может, станет понятнее:
[youtube=
YouTube Video
...
Рейтинг: 0 / 0
c# Интерфейсы способы применения
    #38644955
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320,
обыкновенные люди… в общем, напоминают прежних (c)
ага накидали определений, он наверное все это и раньше видел(ТА) и от этого сюда кинулся, а тут ему опять по новой ))
Задумайтесь, что первично clr или #?
Наверное кто читал Рихтера раз 5-6 встречали в повествовании такую строчку.
- Но создатели C# посчитали нужным.(с) ( или близко по смыслу)
а теперь выйдем из матрицы
Предположим создатели не создавали понятие интерфейс
а вместо него был бы
Код: c#
1.
2.
3.
4.
  abstract interface class IDisposable
  {
      public abstract void Dispose();
  }


к стати из байт кода практически примерно так и смотрится.
а во всех учебниках и хелпах разжевывалось бы понятия спецификатора interface :
что запрещает иметь в классе, и для чего он нужен..
конечно нудно, громоздко, дорого но мы бы терпели..
И что? прально матрица бы поменялась..
...
Рейтинг: 0 / 0
c# Интерфейсы способы применения
    #38644956
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320Жопа с интерфейсами (а точнее, с наследованием в C#) в том, что, если мне нужно унаследовать реализацию , а не сигнатуру, то придётся городить длинный хвост наследования "по штучке" из классов. Либо копипастить реализацию интерфейсов из тех классов, в которых находится нужная мне.Это не "жопа с интерфейсами", они тут вообще ни при чем. Отсутствие множественного наследования это "жопа языка" и "жопа компилятора". А интерфейсы как костыль помогают сделать вид, что оно есть.

И да, мне множественного наследования тоже не хватает.

user7320Или есть методы лучше?Конечно есть. Создать свой проджект айтем с куском нужного кода, и не заниматься копипастой.
...
Рейтинг: 0 / 0
c# Интерфейсы способы применения
    #38645012
Nechto
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: c#
1.
2.
3.
4.
5.
6.
7.
BASE : IBC // Не видем методы класса B и C

BASE : IA // Тоже не видем методы класса A

// Какой же смысл нагромождать код. Я вообще изначально представлял, что интерфейсы это как содержание книги. Обратись по оглавлению и ты получишь текст параграфа. Оказалось что я неправильно думал, и как оказалось интерфейс содержание пустышка. По которому ты не имеешь линков на методы. :( 

// Зачем нужен этот весь код, приведите пожалуйста хоть кто ни будь наглядный код. Чтобы развеять мои сомнения на счёт интерфейсов.
...
Рейтинг: 0 / 0
c# Интерфейсы способы применения
    #38645093
VIT2708
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nechto
Код: c#
1.
2.
3.
4.
5.
6.
7.
BASE : IBC // Не видем методы класса B и C

BASE : IA // Тоже не видем методы класса A

// Какой же смысл нагромождать код. Я вообще изначально представлял, что интерфейсы это как содержание книги. Обратись по оглавлению и ты получишь текст параграфа. Оказалось что я неправильно думал, и как оказалось интерфейс содержание пустышка. По которому ты не имеешь линков на методы. :( 

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



Интерфейсы вообще не обязательно использовать. Если вы выстроили себе модель наследования обьектов то вам и не нужно создавать интерфейсы
...
Рейтинг: 0 / 0
c# Интерфейсы способы применения
    #38645105
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariyuser7320Жопа с интерфейсами (а точнее, с наследованием в C#) в том, что, если мне нужно унаследовать реализацию , а не сигнатуру, то придётся городить длинный хвост наследования "по штучке" из классов. Либо копипастить реализацию интерфейсов из тех классов, в которых находится нужная мне.Это не "жопа с интерфейсами", они тут вообще ни при чем. Отсутствие множественного наследования это "жопа языка" и "жопа компилятора". А интерфейсы как костыль помогают сделать вид, что оно есть.

И да, мне множественного наследования тоже не хватает.

user7320Или есть методы лучше?Конечно есть. Создать свой проджект айтем с куском нужного кода, и не заниматься копипастой.
Я пока нашёл только такие способы:

- внедрение зависимостей (например, передаём нужный объект в конструктор);

- хелперы на статических методах (которым нужен свой статический класс).

Минус первого метода - нужно где-то инстанцировать внедряемый объект вне объекта, в который внедряем. Т. е. нужен третий объект.
...
Рейтинг: 0 / 0
c# Интерфейсы способы применения
    #38645114
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nechto
Код: c#
1.
2.
3.
BASE : IBC // Не видем методы класса B и C

BASE : IA // Тоже не видем методы класса A


// Какой же смысл нагромождать код. Я вообще изначально представлял, что интерфейсы это как содержание книги. Обратись по оглавлению и ты получишь текст параграфа. Оказалось что я неправильно думал, и как оказалось интерфейс содержание пустышка. По которому ты не имеешь линков на методы. :(

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


Все эти интерфейсы, инекции и прочая муть нужны для управления сложными приложениями. Люди, которые в жизни никогда сложнее Hello World и говносайтов-визиток на ПХП ничего не писали - им трудно понять, зачем столько сложностей. Ведь можно тупо наговнокодить лапши и это будет как-то работать.

VIT2708Интерфейсы вообще не обязательно использовать. Если вы выстроили себе модель наследования обьектов то вам и не нужно создавать интерфейсы
Представляю, как выглядел бы .NET, не будь там интерфейсов, а только одиночное наследование - весь такой на хелперах-расширениях и на внедрениях. Тогда бы новички точно бы не стали такое изучать.
...
Рейтинг: 0 / 0
c# Интерфейсы способы применения
    #38645121
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nechto

Попробуйте написать небольшое приложение. Потом добавить функциональности к нему. Потом ещё добавить. Потом ещё. Потом отрефакторить. Потом использовать какие-нибудь сторонние библиотеки. Потом изменить часть кода под изменившиеся требования. Потом отрефакторить. Потом написать под другую платформу клиент для вашего приложения. И всё это 10 раз в цикле в разных комбинациях. Когда надоест тестировать, каждый раз запуская под F5 и заполняя формы, ставить точки останова в обработчиках, вы дойдёте до юнит-тестов. Там и до инъекций недалеко. Там же будет разделение кода представлений и моделей. И т. д. и т. п. Объяснять неопытному новичку - почти гиблое дело. Он просто не поймёт. Нужна практика. Очень много практики. Грубо говоря, 10 лет по 4-8 часов в день чистого программирования.
...
Рейтинг: 0 / 0
c# Интерфейсы способы применения
    #38645148
VIT2708
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nechto,

Скачайте книжку " Э. Стиллмен, Дж. Грин - Изучаем C# " там по нормальному написано зачем интерфейсы с примерами.
...
Рейтинг: 0 / 0
c# Интерфейсы способы применения
    #38645203
kmaw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyОтсутствие множественного наследования это "жопа языка" и "жопа компилятора". А интерфейсы как костыль помогают сделать вид, что оно есть.

его нет. оно не нужно. вид никто не делает: реализация интерфейсов - это не множественное наследование.
...
Рейтинг: 0 / 0
c# Интерфейсы способы применения
    #38645291
17-77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nechto,

с абстракциями все просто:
у тебя есть сотовый телефон (Mobile) - это сложный объект, внутри куча непонятных функций, ты делаешь для него интерфейсы:
* ITelephone - звонилко
* ISMS - отправлялко-смско

класс наследуется от двух интерфейсов Mobile: ITelephone, ISMS

потом в коде, если ты приведешь Mobile к ITelephone , то посмотришь на сложный объект с точки зрения "звонилко" и увидишь (тебе будут доступны) только функции телефона, а если приведешь к ISMS - то аналогично с точки зрения "отправлялко-смско"

если у тебя будет два телефона и у обоих будет интерфейс "отправлялко-смско" (ISMS), приведешь оба к ISMS, то ты можешь в цикле отправить одну и ту же смску с разных телефонов, при необходимости - другими словами групповое выполнение одной функции разными объектами

абстрактный класс - та же хрень, только можно пихуть туда (скрыть) реализацию неких базовых/вспомогательных методов
...
Рейтинг: 0 / 0
c# Интерфейсы способы применения
    #38645479
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
c# Интерфейсы способы применения
    #38645482
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степи а теперь выйдем из матрицы
И попадем в другую матрицу, clr-ную. Про нюансы реализации интерфейсов в байткоде знать, в общем, неплохо. Для общего развития, но практической пользы от этого мало. А упомянутый пассаж с интерфейсами (.class interface public abstract auto ansi бла-бла-бла) вносит окончательную путаницы в неокрепший ум. Классическое определение, данное мною выше, плюс некоторое количество практики - именно то, что нужно на начальном этапе, а углубление в низкоуровневые нюансы реализации будет только мешать (поэтому, кстати, Рихтера часто не рекомендуют начинающим).
И да, за примерно 8 лет возни с дотнетом мне ни разу не пришлось применять на практике знание байткодной реализации интерфейсов. Равно как и не возникало сожалений об отсутствии множественного наследования.
...
Рейтинг: 0 / 0
c# Интерфейсы способы применения
    #38645535
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры Павловны,
авторИ попадем в другую матрицу, clr-ную. Про нюансы реализации интерфейсов в байткоде знать, в общем, неплохо. Для общего развития, но практической пользы от этого мало. А упомянутый пассаж с интерфейсами (.class interface public abstract auto ansi бла-бла-бла) вносит окончательную путаницы в неокрепший ум.
не передергивайте , я не призывал (ТА) лазить в байткод, весь мой синопсис был направлен на облегчение понимания, через принятие оных как абстрактных классов, что в прочем мои рекомендации и ваши пожелание
авторКлассическое определение, данное мною выше
пошли в небо по воробьям 16035642 , что в прочем объяснимо возможно клиническим случаем у та, а термин матрица
был применен не общаясь с та, а в общении с могучим и продолжительным пользователем.
авторИ да, за примерно 8 лет возни с дотнетом мне ни разу не пришлось применять на практике знание байткодной реализации интерфейсов. Равно как и не возникало сожалений об отсутствии множественного наследования.
это очень хорошо, и вы тут не одиноки, та пишет пол года и не вдупляется в интерфейсы, мало того и он не одинок, есть по много лет кто пишет и не знает оных, если взять асп, меня ваще умиляют некоторые спецы пишущие много лет, и пытающиеся ловить
клик на клиенте в образах обработчиков на сервере.
Это же C#, тут не нужны глубокие знания чтобы соорудить что то подобное коду, а уж тем более лазить в байт код ( удел не многих, да и время свободное на это надо), тут достаточно прихуярить мышкой с тулбара чонить на середину, и пару раз ебнуть по нему, что бы открылся дефолтный обработчик, и читать как бы считается в западло...
вот тын не по теме
т
...
Рейтинг: 0 / 0
c# Интерфейсы способы применения
    #38645596
Фотография Диез
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320VIT2708Интерфейсы вообще не обязательно использовать. Если вы выстроили себе модель наследования обьектов то вам и не нужно создавать интерфейсы
Представляю, как выглядел бы .NET, не будь там интерфейсов, а только одиночное наследование - весь такой на хелперах-расширениях и на внедрениях. Тогда бы новички точно бы не стали такое изучать.

Было такое уже - называется Delphi. Различные классы для DbAware и не-DbAware контролов - это эпик! Создание дата-провайдеров для SQL-серверов - рокет сайенс. Модульные приложения - экзотика.

В-общем, наглядный пример, что без интерфейсов грустно.
...
Рейтинг: 0 / 0
c# Интерфейсы способы применения
    #38645623
RubinDm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степи... в общем то эрекция происходит не на IEnumerable , а на IEnumerator GetEnumerator() ... ох-нифига-се.. :/ не думал, что я могу еще чему-то удивляться глядя на C#.. и тем не менее. Понять бы еще, зачем оно надо? :/
...
Рейтинг: 0 / 0
c# Интерфейсы способы применения
    #38645863
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RubinDmПонять бы еще, зачем оно надо? :/
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
    class A:IEnumerable{

        public IEnumerator GetEnumerator()
        {
            ...
        }

        IEnumerator IEnumerable.GetEnumerator()
        {
            ...
        }
    }


какой GetEnumerator должен звать foreach(var v in new A()) ?
...
Рейтинг: 0 / 0
c# Интерфейсы способы применения
    #38646011
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ох уже эти Фаулеры...

http://en.wikipedia.org/wiki/Factory_pattern More broadly, a subroutine that returns a "new" object may be referred to as a "factory"

Фаулер от спорта и биологии, при собеседовании кандидата на игру в футбол:

автор- Вы обладаете навыками асимметричной наземной локомоции?

- Нет, я только умею бе... (бегать)

- "Бее", "мее" - вот всё, что вы знаете, жалкие джуниоры. Нам такие не нужны. Мы ищем настоящих профи, типа меня (напыщенного 23-летнего "сеньора", наблатыкавшегося умными терминами, значения которых он и сам до конца не знает).

Назови какую-нибудь банальную и привычную фигню как-нибудь заумно. Напиши об этой простой фигне кучу книжек, чтобы никто не мог понять, про что там. - Получи всемирное признание и известность, как профессор "словоблудия" и маститый исследователь этой фигни.
...
Рейтинг: 0 / 0
c# Интерфейсы способы применения
    #38646014
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Особенно смешно, когда отвечаешь "фабрика - это, в общем случае, такая штука, которая создаёт новый объект". А в ответ "нууу... не совсем". Думаешь так про себя: "боже, что этот болванчик ещё имел ввиду - понавбивают себе в голову каждый своё видение, а потом попробуй поподстраивайся под них".
...
Рейтинг: 0 / 0
c# Интерфейсы способы применения
    #38646022
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилRubinDmПонять бы еще, зачем оно надо? :/
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
    class A:IEnumerable{

        public IEnumerator GetEnumerator()
        {
            ...
        }

        IEnumerator IEnumerable.GetEnumerator()
        {
            ...
        }
    }


какой GetEnumerator должен звать foreach(var v in new A()) ?
А что, если я возьму и на собеседовании при подобном вопросе вдруг неожиданно вылью на тебя заранее заготовленное ведро помоев? "Нифига себе!", - подумает собеседующий, - "у этого парня очень нестандартное мышление. Он явно сможет найти выход из любой ситации. Берём его в креативный отдел главных архитекторов!"

Не в обиду, а так... )))
...
Рейтинг: 0 / 0
c# Интерфейсы способы применения
    #38646041
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилRubinDmПонять бы еще, зачем оно надо? :/
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
    class A:IEnumerable{

        public IEnumerator GetEnumerator()
        {
            ...
        }

        IEnumerator IEnumerable.GetEnumerator()
        {
            ...
        }
    }


какой GetEnumerator должен звать foreach(var v in new A()) ?
Первый. Если его будет, второй.
...
Рейтинг: 0 / 0
c# Интерфейсы способы применения
    #38646102
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320Не в обиду, а так... )))
Эмм.. а ведь вроде как никто никого лично в незнании вопроса про энумератор не обвинял ;)
...
Рейтинг: 0 / 0
c# Интерфейсы способы применения
    #38646222
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры Павловныuser7320Не в обиду, а так... )))
Эмм.. а ведь вроде как никто никого лично в незнании вопроса про энумератор не обвинял ;)
Так я же не в обиду, а так... Извините, кого что если...
...
Рейтинг: 0 / 0
c# Интерфейсы способы применения
    #38647083
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320,

это не вопрос, а попытка объяснения "Понять бы еще, зачем оно надо? :/"
...
Рейтинг: 0 / 0
43 сообщений из 43, показаны все 2 страниц
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / c# Интерфейсы способы применения
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]