|
c# Интерфейсы способы применения
|
|||
---|---|---|---|
#18+
Здравствуйте. Уже как второй день подряд пытаюсь разобраться с для чего нужны эти интерфейсы и абстрактные классы. Дело в том то мне не ясно, какое преимущество я получаю использую такую логику. [spoiler] Сошлюсь на этот видео урок ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2014, 13:14 |
|
c# Интерфейсы способы применения
|
|||
---|---|---|---|
#18+
а) Интерфейсы могут быть применены в РАЗНЫХ классах, а не только в каком-то конкретном, что делает универсальным зоопарки очень разных классов - пример - интерфейс IEnumerable - с помощью него, например, можно пройти foreach-ем массив, тектовую строку, коллекцию, словарь и что угодно, в том числе, ты можешь реализовать IEnumerable на собственном любом классе и потом обходить его foreach-ем или Linq-запросами... б) Класс может наследовать только одному базовому классу, но любому количеству интерфейсов ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2014, 13:30 |
|
c# Интерфейсы способы применения
|
|||
---|---|---|---|
#18+
Nechto, На самом деле, про интерфейсы столько замысловатых повествований в сети и в учебниках, и что бы вдуплиться не один день уйдет у новичка. Вообще то с интерфейсами все просто, у нас запрещено множественное наследование в коде пользователя. то есть, Вы без труда можете отнаследоваться от абстрактного класса, а от двух? не получится. Вот тут и создатели пошли на такую хитрость, второй и последующие абстрактные классы они заменили словом интерфейс. а в самих классах убрали методы с реализацией и конструктор, оставив только абстрактные методы. то есть интерфейс это такой же абстрактный класс, без методов с реализацией и конструктора, ну естественно финализатор там никто не видел, не верите, откройте байт код и посмотрите, то есть им там можно, множественные наследования, а нам нельзя.Хм... Если нет конструктора, то естественно конструктор этого абстрактного класса и не будет задействован с стеке вызовов конструкторов и все увянет на последнем вызове конструктора объекта ( мы говорим про ссылочные типы) Хотя можно и создать объект и без вызова конструктора По второму, я согласен с вами ( хотя фильм не смотрел) можно и было бы запихнуть и в базовый класс.. Но бываю в жизни и такие моменты, когда нужно реализовывать И. например foreach требует что бы левый элемент реализовывал IEnumerable Ну уж если пошел разговор о IEnumerable Вспомним про IDisposable вы то его никуда не запихнете в базовый класс. У вас тогда не встанет директива using да бог с ней, у вас и не вызовется автовызов исполнения этого интерфейса. ну не используя using вы додавите Dispose() через базовый класс. А в другом случае ( вообще два случая авто вызова ( классических)IDisposable ) вообще никакой эрекции не будет.. Как то так.. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2014, 14:30 |
|
c# Интерфейсы способы применения
|
|||
---|---|---|---|
#18+
Где-то в степи то есть интерфейс это такой же абстрактный класс Да ну, ерунда какая. Если что-то является классом, то это подразумевает реализацию класса, и наследование этой реализации (даже если реализация вырожденная). А интерфейс - это просто контракт, объявляющий, что если некий класс реализует этот интерфейс, то этот класс обязан иметь методы, объявленные в интерфейсе. И все. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2014, 16:56 |
|
c# Интерфейсы способы применения
|
|||
---|---|---|---|
#18+
Сон Веры Павловны, интерфейс это обыкновенный тип и реализован в виде класса, тоже самое и структуры, имеют реализацию класса только запечатанного и наследующего valueType, а то о чем вы говорите - это матрица есть люди которые пишут в байт коде им множественное наследование доступно, на хабре это один перец показательно исполнил.. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2014, 17:12 |
|
c# Интерфейсы способы применения
|
|||
---|---|---|---|
#18+
Сон Веры Павловныинтерфейс - это просто контракт, не совсем просто - явная реализация интерфейса - тому пример ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2014, 17:26 |
|
c# Интерфейсы способы применения
|
|||
---|---|---|---|
#18+
ИзопропилСон Веры Павловныинтерфейс - это просто контракт, не совсем просто - явная реализация интерфейса - тому примерявная реализация интерфейса это класс. Сон Веры Павловны, Shocker.Pro +1 Где-то в степи, Изопропил -1 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2014, 18:39 |
|
c# Интерфейсы способы применения
|
|||
---|---|---|---|
#18+
Antonariyявная реализация интерфейса это класс что сказать то хотел? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2014, 19:00 |
|
c# Интерфейсы способы применения
|
|||
---|---|---|---|
#18+
Shocker.Proа)Интерфейсы могут быть применены в РАЗНЫХ классах Shocker.Proа)можешь реализовать IEnumerable Сон Веры Павловны а)А интерфейс - это просто контракт, объявляющий, что если некий класс реализует этот интерфейс, то этот класс обязан иметь методы, объявленные в интерфейсе. И все. Значит для этого создавались интерфейсы? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2014, 19:37 |
|
c# Интерфейсы способы применения
|
|||
---|---|---|---|
#18+
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.
тут к стати показан второй классический авто вызов IDisposable ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2014, 19:55 |
|
c# Интерфейсы способы применения
|
|||
---|---|---|---|
#18+
Nechto, авторЗначит для этого создавались интерфейсы вообще эволюция познания поэтапна , в начале берется первоначальное представление ( простое для понимания)( лично я дал считаю именно такое), а потом с опытом и приобретениями оно обрастает, или отвергается полностью в замен истины. ну это все субъективно и имхо.. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2014, 20:06 |
|
c# Интерфейсы способы применения
|
|||
---|---|---|---|
#18+
повышение уровня абстракции. все ООП на этом построено. в интерфейсах задается поведение. например, некоторые сущности умеют выполнять какое-то действие1. эти сущности может обрабатывать некоторая общая инфраструктура. она ничего не знает о деталях реализации этих сущностей, а тольео знает о том, что они выполняют действие1 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2014, 20:36 |
|
c# Интерфейсы способы применения
|
|||
---|---|---|---|
#18+
ИзопропилAntonariyявная реализация интерфейса это класс что сказать то хотел?а сам что хотел? ИзопропилСон Веры Павловныинтерфейс - это просто контракт, не совсем просто - явная реализация интерфейса - тому примеро чем этот пассаж? "интерфейс это не просто контракт и класс тому пример" — эта мысль настолько глубока, что ее смысл пропал где-то на дне. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2014, 22:02 |
|
c# Интерфейсы способы применения
|
|||
---|---|---|---|
#18+
NechtoСон Веры Павловныа)А интерфейс - это просто контракт, объявляющий, что если некий класс реализует этот интерфейс, то этот класс обязан иметь методы, объявленные в интерфейсе. И все. Значит для этого создавались интерфейсы?Да. Использование интерфейсов — один из вариантов обеспечения полиморфизма в объектных языках и средах. Все классы, реализующие один и тот же интерфейс, с точки зрения определяемого ими поведения, ведут себя внешне одинаково. Это позволяет писать обобщённые алгоритмы обработки данных, использующие в качестве типов параметры интерфейсов, и применять их к объектам различных типов, всякий раз получая требуемый результат. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2014, 22:27 |
|
c# Интерфейсы способы применения
|
|||
---|---|---|---|
#18+
Как один из вариантов, зачем нужны интерфейсы - 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: ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2014, 08:02 |
|
c# Интерфейсы способы применения
|
|||
---|---|---|---|
#18+
Правда, стоит сказать, что инвесию можно получить и через базовые классы (через абстрактные базовые классы). Но это я в качестве примера же привёл. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2014, 08:04 |
|
c# Интерфейсы способы применения
|
|||
---|---|---|---|
#18+
Где-то в степиNechto, На самом деле, про интерфейсы столько замысловатых повествований в сети и в учебниках, и что бы вдуплиться не один день уйдет у новичка. Вообще то с интерфейсами все просто, у нас запрещено множественное наследование в коде пользователя. то есть, Вы без труда можете отнаследоваться от абстрактного класса, а от двух? не получится. Вот тут и создатели пошли на такую хитрость, второй и последующие абстрактные классы они заменили словом интерфейс. а в самих классах убрали методы с реализацией и конструктор, оставив только абстрактные методы. то есть интерфейс это такой же абстрактный класс, без методов с реализацией и конструктора, ну естественно финализатор там никто не видел, не верите, откройте байт код и посмотрите, то есть им там можно, множественные наследования, а нам нельзя.Хм... Если нет конструктора, то естественно конструктор этого абстрактного класса и не будет задействован с стеке вызовов конструкторов и все увянет на последнем вызове конструктора объекта ( мы говорим про ссылочные типы) Хотя можно и создать объект и без вызова конструктора По второму, я согласен с вами ( хотя фильм не смотрел) можно и было бы запихнуть и в базовый класс.. Но бываю в жизни и такие моменты, когда нужно реализовывать И. например foreach требует что бы левый элемент реализовывал IEnumerable Ну уж если пошел разговор о IEnumerable Вспомним про IDisposable вы то его никуда не запихнете в базовый класс. У вас тогда не встанет директива using да бог с ней, у вас и не вызовется автовызов исполнения этого интерфейса. ну не используя using вы додавите Dispose() через базовый класс. А в другом случае ( вообще два случая авто вызова ( классических)IDisposable ) вообще никакой эрекции не будет.. Как то так.. Жопа с интерфейсами (а точнее, с наследованием в C#) в том, что, если мне нужно унаследовать реализацию , а не сигнатуру, то придётся городить длинный хвост наследования "по штучке" из классов. Либо копипастить реализацию интерфейсов из тех классов, в которых находится нужная мне. Или есть методы лучше? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2014, 08:06 |
|
c# Интерфейсы способы применения
|
|||
---|---|---|---|
#18+
Я бы даже сказал, что интерфейсы всегда абстрактны, в то время как абстрактные классы хотя бы могут иметь конкретную реализацию (т. е. не в полной мере абстрактны). ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2014, 08:10 |
|
c# Интерфейсы способы применения
|
|||
---|---|---|---|
#18+
user7320Жопа с интерфейсами (а точнее, с наследованием в C#) в том, что, если мне нужно унаследовать реализацию , а не сигнатуру, то придётся городить длинный хвост наследования "по штучке" из классов. Либо копипастить реализацию интерфейсов из тех классов, в которых находится нужная мне. Или есть методы лучше? Ну или заниматься "внедрением зависимостей". ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2014, 08:11 |
|
c# Интерфейсы способы применения
|
|||
---|---|---|---|
#18+
Nechto, вот это определение наиболее точно: Сон Веры Павловныа)А интерфейс - это просто контракт, объявляющий, что если некий класс реализует этот интерфейс, то этот класс обязан иметь методы, объявленные в интерфейсе. И все. А вот еще видеоурок по теме, может, станет понятнее: [youtube= ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2014, 09:40 |
|
c# Интерфейсы способы применения
|
|||
---|---|---|---|
#18+
user7320, обыкновенные люди… в общем, напоминают прежних (c) ага накидали определений, он наверное все это и раньше видел(ТА) и от этого сюда кинулся, а тут ему опять по новой )) Задумайтесь, что первично clr или #? Наверное кто читал Рихтера раз 5-6 встречали в повествовании такую строчку. - Но создатели C# посчитали нужным.(с) ( или близко по смыслу) а теперь выйдем из матрицы Предположим создатели не создавали понятие интерфейс а вместо него был бы Код: c# 1. 2. 3. 4.
к стати из байт кода практически примерно так и смотрится. а во всех учебниках и хелпах разжевывалось бы понятия спецификатора interface : что запрещает иметь в классе, и для чего он нужен.. конечно нудно, громоздко, дорого но мы бы терпели.. И что? прально матрица бы поменялась.. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2014, 11:24 |
|
c# Интерфейсы способы применения
|
|||
---|---|---|---|
#18+
user7320Жопа с интерфейсами (а точнее, с наследованием в C#) в том, что, если мне нужно унаследовать реализацию , а не сигнатуру, то придётся городить длинный хвост наследования "по штучке" из классов. Либо копипастить реализацию интерфейсов из тех классов, в которых находится нужная мне.Это не "жопа с интерфейсами", они тут вообще ни при чем. Отсутствие множественного наследования это "жопа языка" и "жопа компилятора". А интерфейсы как костыль помогают сделать вид, что оно есть. И да, мне множественного наследования тоже не хватает. user7320Или есть методы лучше?Конечно есть. Создать свой проджект айтем с куском нужного кода, и не заниматься копипастой. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2014, 11:24 |
|
c# Интерфейсы способы применения
|
|||
---|---|---|---|
#18+
Код: c# 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2014, 12:06 |
|
c# Интерфейсы способы применения
|
|||
---|---|---|---|
#18+
Nechto Код: c# 1. 2. 3. 4. 5. 6. 7.
Интерфейсы вообще не обязательно использовать. Если вы выстроили себе модель наследования обьектов то вам и не нужно создавать интерфейсы ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2014, 13:25 |
|
c# Интерфейсы способы применения
|
|||
---|---|---|---|
#18+
Antonariyuser7320Жопа с интерфейсами (а точнее, с наследованием в C#) в том, что, если мне нужно унаследовать реализацию , а не сигнатуру, то придётся городить длинный хвост наследования "по штучке" из классов. Либо копипастить реализацию интерфейсов из тех классов, в которых находится нужная мне.Это не "жопа с интерфейсами", они тут вообще ни при чем. Отсутствие множественного наследования это "жопа языка" и "жопа компилятора". А интерфейсы как костыль помогают сделать вид, что оно есть. И да, мне множественного наследования тоже не хватает. user7320Или есть методы лучше?Конечно есть. Создать свой проджект айтем с куском нужного кода, и не заниматься копипастой. Я пока нашёл только такие способы: - внедрение зависимостей (например, передаём нужный объект в конструктор); - хелперы на статических методах (которым нужен свой статический класс). Минус первого метода - нужно где-то инстанцировать внедряемый объект вне объекта, в который внедряем. Т. е. нужен третий объект. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2014, 13:31 |
|
c# Интерфейсы способы применения
|
|||
---|---|---|---|
#18+
Nechto Код: c# 1. 2. 3.
// Какой же смысл нагромождать код. Я вообще изначально представлял, что интерфейсы это как содержание книги. Обратись по оглавлению и ты получишь текст параграфа. Оказалось что я неправильно думал, и как оказалось интерфейс содержание пустышка. По которому ты не имеешь линков на методы. :( // Зачем нужен этот весь код, приведите пожалуйста хоть кто ни будь наглядный код. Чтобы развеять мои сомнения на счёт интерфейсов. Все эти интерфейсы, инекции и прочая муть нужны для управления сложными приложениями. Люди, которые в жизни никогда сложнее Hello World и говносайтов-визиток на ПХП ничего не писали - им трудно понять, зачем столько сложностей. Ведь можно тупо наговнокодить лапши и это будет как-то работать. VIT2708Интерфейсы вообще не обязательно использовать. Если вы выстроили себе модель наследования обьектов то вам и не нужно создавать интерфейсы Представляю, как выглядел бы .NET, не будь там интерфейсов, а только одиночное наследование - весь такой на хелперах-расширениях и на внедрениях. Тогда бы новички точно бы не стали такое изучать. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2014, 13:38 |
|
c# Интерфейсы способы применения
|
|||
---|---|---|---|
#18+
Nechto Попробуйте написать небольшое приложение. Потом добавить функциональности к нему. Потом ещё добавить. Потом ещё. Потом отрефакторить. Потом использовать какие-нибудь сторонние библиотеки. Потом изменить часть кода под изменившиеся требования. Потом отрефакторить. Потом написать под другую платформу клиент для вашего приложения. И всё это 10 раз в цикле в разных комбинациях. Когда надоест тестировать, каждый раз запуская под F5 и заполняя формы, ставить точки останова в обработчиках, вы дойдёте до юнит-тестов. Там и до инъекций недалеко. Там же будет разделение кода представлений и моделей. И т. д. и т. п. Объяснять неопытному новичку - почти гиблое дело. Он просто не поймёт. Нужна практика. Очень много практики. Грубо говоря, 10 лет по 4-8 часов в день чистого программирования. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2014, 13:43 |
|
c# Интерфейсы способы применения
|
|||
---|---|---|---|
#18+
Nechto, Скачайте книжку " Э. Стиллмен, Дж. Грин - Изучаем C# " там по нормальному написано зачем интерфейсы с примерами. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2014, 13:53 |
|
c# Интерфейсы способы применения
|
|||
---|---|---|---|
#18+
AntonariyОтсутствие множественного наследования это "жопа языка" и "жопа компилятора". А интерфейсы как костыль помогают сделать вид, что оно есть. его нет. оно не нужно. вид никто не делает: реализация интерфейсов - это не множественное наследование. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2014, 14:28 |
|
c# Интерфейсы способы применения
|
|||
---|---|---|---|
#18+
Nechto, с абстракциями все просто: у тебя есть сотовый телефон (Mobile) - это сложный объект, внутри куча непонятных функций, ты делаешь для него интерфейсы: * ITelephone - звонилко * ISMS - отправлялко-смско класс наследуется от двух интерфейсов Mobile: ITelephone, ISMS потом в коде, если ты приведешь Mobile к ITelephone , то посмотришь на сложный объект с точки зрения "звонилко" и увидишь (тебе будут доступны) только функции телефона, а если приведешь к ISMS - то аналогично с точки зрения "отправлялко-смско" если у тебя будет два телефона и у обоих будет интерфейс "отправлялко-смско" (ISMS), приведешь оба к ISMS, то ты можешь в цикле отправить одну и ту же смску с разных телефонов, при необходимости - другими словами групповое выполнение одной функции разными объектами абстрактный класс - та же хрень, только можно пихуть туда (скрыть) реализацию неких базовых/вспомогательных методов ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2014, 15:17 |
|
c# Интерфейсы способы применения
|
|||
---|---|---|---|
#18+
Где-то в степи а теперь выйдем из матрицы И попадем в другую матрицу, clr-ную. Про нюансы реализации интерфейсов в байткоде знать, в общем, неплохо. Для общего развития, но практической пользы от этого мало. А упомянутый пассаж с интерфейсами (.class interface public abstract auto ansi бла-бла-бла) вносит окончательную путаницы в неокрепший ум. Классическое определение, данное мною выше, плюс некоторое количество практики - именно то, что нужно на начальном этапе, а углубление в низкоуровневые нюансы реализации будет только мешать (поэтому, кстати, Рихтера часто не рекомендуют начинающим). И да, за примерно 8 лет возни с дотнетом мне ни разу не пришлось применять на практике знание байткодной реализации интерфейсов. Равно как и не возникало сожалений об отсутствии множественного наследования. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2014, 17:07 |
|
c# Интерфейсы способы применения
|
|||
---|---|---|---|
#18+
Сон Веры Павловны, авторИ попадем в другую матрицу, clr-ную. Про нюансы реализации интерфейсов в байткоде знать, в общем, неплохо. Для общего развития, но практической пользы от этого мало. А упомянутый пассаж с интерфейсами (.class interface public abstract auto ansi бла-бла-бла) вносит окончательную путаницы в неокрепший ум. не передергивайте , я не призывал (ТА) лазить в байткод, весь мой синопсис был направлен на облегчение понимания, через принятие оных как абстрактных классов, что в прочем мои рекомендации и ваши пожелание авторКлассическое определение, данное мною выше пошли в небо по воробьям 16035642 , что в прочем объяснимо возможно клиническим случаем у та, а термин матрица был применен не общаясь с та, а в общении с могучим и продолжительным пользователем. авторИ да, за примерно 8 лет возни с дотнетом мне ни разу не пришлось применять на практике знание байткодной реализации интерфейсов. Равно как и не возникало сожалений об отсутствии множественного наследования. это очень хорошо, и вы тут не одиноки, та пишет пол года и не вдупляется в интерфейсы, мало того и он не одинок, есть по много лет кто пишет и не знает оных, если взять асп, меня ваще умиляют некоторые спецы пишущие много лет, и пытающиеся ловить клик на клиенте в образах обработчиков на сервере. Это же C#, тут не нужны глубокие знания чтобы соорудить что то подобное коду, а уж тем более лазить в байт код ( удел не многих, да и время свободное на это надо), тут достаточно прихуярить мышкой с тулбара чонить на середину, и пару раз ебнуть по нему, что бы открылся дефолтный обработчик, и читать как бы считается в западло... вот тын не по теме т ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2014, 17:41 |
|
c# Интерфейсы способы применения
|
|||
---|---|---|---|
#18+
user7320VIT2708Интерфейсы вообще не обязательно использовать. Если вы выстроили себе модель наследования обьектов то вам и не нужно создавать интерфейсы Представляю, как выглядел бы .NET, не будь там интерфейсов, а только одиночное наследование - весь такой на хелперах-расширениях и на внедрениях. Тогда бы новички точно бы не стали такое изучать. Было такое уже - называется Delphi. Различные классы для DbAware и не-DbAware контролов - это эпик! Создание дата-провайдеров для SQL-серверов - рокет сайенс. Модульные приложения - экзотика. В-общем, наглядный пример, что без интерфейсов грустно. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2014, 18:23 |
|
c# Интерфейсы способы применения
|
|||
---|---|---|---|
#18+
Где-то в степи... в общем то эрекция происходит не на IEnumerable , а на IEnumerator GetEnumerator() ... ох-нифига-се.. :/ не думал, что я могу еще чему-то удивляться глядя на C#.. и тем не менее. Понять бы еще, зачем оно надо? :/ ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2014, 18:50 |
|
c# Интерфейсы способы применения
|
|||
---|---|---|---|
#18+
RubinDmПонять бы еще, зачем оно надо? :/ Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
какой GetEnumerator должен звать foreach(var v in new A()) ? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2014, 07:09 |
|
c# Интерфейсы способы применения
|
|||
---|---|---|---|
#18+
Ох уже эти Фаулеры... http://en.wikipedia.org/wiki/Factory_pattern More broadly, a subroutine that returns a "new" object may be referred to as a "factory" Фаулер от спорта и биологии, при собеседовании кандидата на игру в футбол: автор- Вы обладаете навыками асимметричной наземной локомоции? - Нет, я только умею бе... (бегать) - "Бее", "мее" - вот всё, что вы знаете, жалкие джуниоры. Нам такие не нужны. Мы ищем настоящих профи, типа меня (напыщенного 23-летнего "сеньора", наблатыкавшегося умными терминами, значения которых он и сам до конца не знает). Назови какую-нибудь банальную и привычную фигню как-нибудь заумно. Напиши об этой простой фигне кучу книжек, чтобы никто не мог понять, про что там. - Получи всемирное признание и известность, как профессор "словоблудия" и маститый исследователь этой фигни. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2014, 10:35 |
|
c# Интерфейсы способы применения
|
|||
---|---|---|---|
#18+
Особенно смешно, когда отвечаешь "фабрика - это, в общем случае, такая штука, которая создаёт новый объект". А в ответ "нууу... не совсем". Думаешь так про себя: "боже, что этот болванчик ещё имел ввиду - понавбивают себе в голову каждый своё видение, а потом попробуй поподстраивайся под них". ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2014, 10:37 |
|
c# Интерфейсы способы применения
|
|||
---|---|---|---|
#18+
ИзопропилRubinDmПонять бы еще, зачем оно надо? :/ Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
какой GetEnumerator должен звать foreach(var v in new A()) ? А что, если я возьму и на собеседовании при подобном вопросе вдруг неожиданно вылью на тебя заранее заготовленное ведро помоев? "Нифига себе!", - подумает собеседующий, - "у этого парня очень нестандартное мышление. Он явно сможет найти выход из любой ситации. Берём его в креативный отдел главных архитекторов!" Не в обиду, а так... ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2014, 10:41 |
|
c# Интерфейсы способы применения
|
|||
---|---|---|---|
#18+
ИзопропилRubinDmПонять бы еще, зачем оно надо? :/ Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
какой GetEnumerator должен звать foreach(var v in new A()) ? Первый. Если его будет, второй. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2014, 10:57 |
|
c# Интерфейсы способы применения
|
|||
---|---|---|---|
#18+
user7320Не в обиду, а так... ))) Эмм.. а ведь вроде как никто никого лично в незнании вопроса про энумератор не обвинял ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2014, 11:32 |
|
c# Интерфейсы способы применения
|
|||
---|---|---|---|
#18+
Сон Веры Павловныuser7320Не в обиду, а так... ))) Эмм.. а ведь вроде как никто никого лично в незнании вопроса про энумератор не обвинял ;) Так я же не в обиду, а так... Извините, кого что если... ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2014, 12:36 |
|
|
start [/forum/topic.php?all=1&fid=20&tid=1402909]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
60ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
75ms |
get tp. blocked users: |
1ms |
others: | 345ms |
total: | 524ms |
0 / 0 |