|
Комбинирование интерфейсов
|
|||
---|---|---|---|
#18+
AxeleronДиез, Код: c# 1. 2. 3. 4. 5. 6. 7.
?это не ошибка, это искреннее желание, чтобы работало именно так - public User. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2015, 14:12 |
|
Комбинирование интерфейсов
|
|||
---|---|---|---|
#18+
Antonariy, В случае со свойством - был приведен конкретный пример 17665356 , когда контракт нарушается. Для метода такой пример не годится - User подходит при любом использовании (return-типы ковариантнты - нет?). Тогда зачем ограничивать возврат конкретным типом, если подходит любой наследник? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2015, 14:27 |
|
Комбинирование интерфейсов
|
|||
---|---|---|---|
#18+
Диез, потому что "пропертя" это на самом деле два обычных метода, а значит и суть дела это не меняет :) Код: c# 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2015, 14:30 |
|
Комбинирование интерфейсов
|
|||
---|---|---|---|
#18+
Roman MejtesДиез, потому что "пропертя" это на самом деле два обычных метода, а значит и суть дела это не меняет :) Код: c# 1. 2.
В случае со свойством нарушается как раз контракт set-метода, и это понятно. get-метод допускает возврат User вместо IUser в любых случаях. Просто метод IUset creator() - тоже. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2015, 14:35 |
|
Комбинирование интерфейсов
|
|||
---|---|---|---|
#18+
ДиезAntonariy, В случае со свойством - был приведен конкретный пример 17665356 , когда контракт нарушается. Для метода такой пример не годится - User подходит при любом использовании (return-типы ковариантнты - нет?). Тогда зачем ограничивать возврат конкретным типом, если подходит любой наследник?ты реально не догоняешь, что все эти слова мимо кассы? интерфейс это соглашение на уровне декларации - что вот в этом месте должно быть написано слово IUser, а не User. все обстоятельства за рамками этого факта не имеют ни малейшего значения. все эти вопросы "зачем" из разряда попыток оспорить уголовный кодекс. не нравятся или не понимаешь правил ООП - пиши на js или асемблере. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2015, 14:42 |
|
Комбинирование интерфейсов
|
|||
---|---|---|---|
#18+
AntonariyДиезAntonariy, В случае со свойством - был приведен конкретный пример 17665356 , когда контракт нарушается. Для метода такой пример не годится - User подходит при любом использовании (return-типы ковариантнты - нет?). Тогда зачем ограничивать возврат конкретным типом, если подходит любой наследник?ты реально не догоняешь, что все эти слова мимо кассы? интерфейс это соглашение на уровне декларации - что вот в этом месте должно быть написано слово IUser, а не User. все обстоятельства за рамками этого факта не имеют ни малейшего значения. все эти вопросы "зачем" из разряда попыток оспорить уголовный кодекс. не нравятся или не понимаешь правил ООП - пиши на js или асемблере. Давайте без перехода на личности, ок? :) Насчет "понимания принципов ООП" - объясните тогда, плз, почему в Java аналогичный фокус работает? Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
Компилируется без проблем. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2015, 14:55 |
|
Комбинирование интерфейсов
|
|||
---|---|---|---|
#18+
Диез, Пойми, что интерфейсам абсолютно по барабану, что вот этот его член, являющийся интерфейсом, имплементирован в том или ином классе. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2015, 15:22 |
|
Комбинирование интерфейсов
|
|||
---|---|---|---|
#18+
самый точный ответ будет: "Потому что" :) потому что, так решили разрабы в МС и как по мне такое решение вполне логично и верно. если так сильно прижало, можно наследовать интерфейс в абстрактном классе, а потом через new переопределить этот метод на метод с типом User и радоваться жизни ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2015, 15:24 |
|
Комбинирование интерфейсов
|
|||
---|---|---|---|
#18+
Диез Давайте без перехода на личности, ок? :)пока что я про личность ничего не сказал. Диез почему в Java аналогичный фокус работает?@Override - это называется аналогичный? без него же не компилится, да? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2015, 15:25 |
|
Комбинирование интерфейсов
|
|||
---|---|---|---|
#18+
Roman Mejtesсамый точный ответ будет: "Потому что" :) потому что, так решили разрабы в МС и как по мне такое решение вполне логично и верно. если так сильно прижало, можно наследовать интерфейс в абстрактном классе, а потом через new переопределить этот метод на метод с типом User и радоваться жизни Спасибо, уже разобрался :) http://blogs.msdn.com/b/cyrusn/archive/2004/12/08/278661.aspx Фича действительно мало востребованная, судя по тому, что этот вопрос у меня только сейчас возник. Посмотрел как ее в Nemerle реализовали без поддержки CLR: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Элегантно :) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2015, 15:35 |
|
Комбинирование интерфейсов
|
|||
---|---|---|---|
#18+
AntonariyДиез Давайте без перехода на личности, ок? :)пока что я про личность ничего не сказал. Диез почему в Java аналогичный фокус работает?@Override - это называется аналогичный? без него же не компилится, да? У вас есть привычка - вы считаете по умолчанию, что оппонент хуже вас разбирается в теме, если задает вопросы. Зря вы так )) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2015, 15:38 |
|
Комбинирование интерфейсов
|
|||
---|---|---|---|
#18+
википедияИспользование интерфейсов возможно двумя способами: Класс может реализовывать интерфейс. Реализация интерфейса заключается в том, что в описании класса данный интерфейс указывается как реализуемый, а в коде класса обязательно определяются все методы, которые описаны в интерфейсе, в полном соответствии с сигнатурами из описания этого интерфейса . То есть, если класс реализует интерфейс, для любого экземпляра этого класса существуют и могут быть вызваны все описанные в интерфейсе методы. Один класс может реализовать несколько интерфейсов одновременно. Возможно объявление переменных и параметров методов как имеющих тип-интерфейс. В такую переменную или параметр может быть записан экземпляр любого класса, реализующего интерфейс. Если интерфейс объявлен как тип возвращаемого значения функции, это означает, что функция возвращает объект класса, реализующего данный интерфейс.а разработчики java просто решили дать разработчику выстрелить себе в ногу с помощью @Override. фича-то оказалась востребованной. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2015, 15:41 |
|
Комбинирование интерфейсов
|
|||
---|---|---|---|
#18+
Antonariy... Диез почему в Java аналогичный фокус работает?@Override - это называется аналогичный? без него же не компилится, да? Прекрасно компилируется! Код: java 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2015, 15:49 |
|
Комбинирование интерфейсов
|
|||
---|---|---|---|
#18+
ДиезAntonariyпропущено... пока что я про личность ничего не сказал. пропущено... @Override - это называется аналогичный? без него же не компилится, да? У вас есть привычка - вы считаете по умолчанию, что оппонент хуже вас разбирается в теме, если задает вопросы. Зря вы так ))это умолчание? 17666424 или может быть это? 17666660 нет, оппонент не молчал, он активно демонстрировал свой невысокий уровень владения темой. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2015, 15:49 |
|
Комбинирование интерфейсов
|
|||
---|---|---|---|
#18+
ДиезAntonariy... пропущено... @Override - это называется аналогичный? без него же не компилится, да? Прекрасно компилируется! Код: java 1. 2. 3. 4. 5. 6. 7.
ну значит я ошибся насчет назначения этого overrides, а java является еще большим убожеством, чем мне казалось ранее, раз позволяет такие вольности. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2015, 15:53 |
|
Комбинирование интерфейсов
|
|||
---|---|---|---|
#18+
Antonariy...ну значит я ошибся ... Уже прогресс Удачи! ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2015, 16:01 |
|
Комбинирование интерфейсов
|
|||
---|---|---|---|
#18+
ДиезУже прогресс Удачи! И что ты этим кому доказал? Тебе Antonariy все на пальцах расписал и не поленился. А ты не только Java не знаешь, но и элементарных основ C#. Но сегодня, надеюсь, ты усвоил урок 5: "Интерфейсы". Уже прогресс. Удачи! ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2015, 16:04 |
|
Комбинирование интерфейсов
|
|||
---|---|---|---|
#18+
ДиезAntonariy...ну значит я ошибся ... Уже прогресс Удачи!пфф, какую ерунду мои оппоненты считают прогрессом. наверное по себе судят? я всегда признаю свои промахи. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2015, 16:14 |
|
Комбинирование интерфейсов
|
|||
---|---|---|---|
#18+
AxeleronДиезУже прогресс Удачи! И что ты этим кому доказал? Тебе Antonariy все на пальцах расписал и не поленился. А ты не только Java не знаешь, но и элементарных основ C#. Но сегодня, надеюсь, ты усвоил урок 5: "Интерфейсы". Уже прогресс. Удачи! Переформулирую свой первоначальный вопрос более абстрактно: почему в C# нарушается принцип Return Type Covariance, который соблюдается в других языках с ООП, с которыми я знаком(по крайней мере, в Java, Scala, Nemerle)? Вижу, что вы этим вопросом не интересовались. Ну что ж, это не дает мне повод считать, что вы не разбираетесь в основах ООП. У каждого свои интересы. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2015, 17:21 |
|
Комбинирование интерфейсов
|
|||
---|---|---|---|
#18+
Диез, Почему Вы уверены, что все языки программирования должны быть одинаковыми и иметь одинаковые инструменты, возможности и функционал? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2015, 17:32 |
|
Комбинирование интерфейсов
|
|||
---|---|---|---|
#18+
ДиезAxeleronпропущено... И что ты этим кому доказал? Тебе Antonariy все на пальцах расписал и не поленился. А ты не только Java не знаешь, но и элементарных основ C#. Но сегодня, надеюсь, ты усвоил урок 5: "Интерфейсы". Уже прогресс. Удачи! Переформулирую свой первоначальный вопрос более абстрактно: почему в C# нарушается принцип Return Type Covariance, который соблюдается в других языках с ООП, с которыми я знаком(по крайней мере, в Java, Scala, Nemerle)? Вижу, что вы этим вопросом не интересовались. Что характерно, ответ был дан еще до того, как был задан вопрос: 17665335 Antonariyпричина в том, что это данность. Интерфейсы работают так и никак иначе. http://stackoverflow.com/questions/5709034/does-c-sharp-support-return-type-covariance This kind of covariance is not supported in C#, and is unlikely to ever be supported. It is not supported by the CLR. чем я в действительности не интересовался, так этой ковариантностью. и ошибся в том, что это способ выстрелить себе в ногу. This is safe because consumers of Contents via Enclosure expect an Animal, and Aquarium promises to not only fulfill that requirement, but moreover, to make a more strict promise: that the animal is always a fish. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2015, 17:56 |
|
Комбинирование интерфейсов
|
|||
---|---|---|---|
#18+
AxeleronДиез, Почему Вы уверены, что все языки программирования должны быть одинаковыми и иметь одинаковые инструменты, возможности и функционал? А я ничего подобного не утверждал. Вопрос "почему?" для меня имеет смысл "по какой причине?". Для вас, видимо, смысл другой - "какого хрена?" Извечная проблема неоднозначности естественных языков. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2015, 18:07 |
|
Комбинирование интерфейсов
|
|||
---|---|---|---|
#18+
AntonariyДиезпропущено... Переформулирую свой первоначальный вопрос более абстрактно: почему в C# нарушается принцип Return Type Covariance, который соблюдается в других языках с ООП, с которыми я знаком(по крайней мере, в Java, Scala, Nemerle)? Вижу, что вы этим вопросом не интересовались. Что характерно, ответ был дан еще до того, как был задан вопрос: 17665335 Antonariyпричина в том, что это данность. Интерфейсы работают так и никак иначе. http://stackoverflow.com/questions/5709034/does-c-sharp-support-return-type-covariance This kind of covariance is not supported in C#, and is unlikely to ever be supported. It is not supported by the CLR. чем я в действительности не интересовался, так этой ковариантностью. и ошибся в том, что это способ выстрелить себе в ногу. This is safe because consumers of Contents via Enclosure expect an Animal, and Aquarium promises to not only fulfill that requirement, but moreover, to make a more strict promise: that the animal is always a fish. Простите, мне, сложно всерьез воспринимать информацию, которая начинается со слов "ты тупой?". ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2015, 18:12 |
|
Комбинирование интерфейсов
|
|||
---|---|---|---|
#18+
Диез, Нет, я именно спросил то что хотел - почему вы считаете (уверены), что все языки программирования должны быть одинаковыми? Мне стало интересно. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2015, 18:12 |
|
Комбинирование интерфейсов
|
|||
---|---|---|---|
#18+
AxeleronДиез, Нет, я именно спросил то что хотел - почему вы считаете (уверены), что все языки программирования должны быть одинаковыми? Мне стало интересно. Видимо, вам и ответить придется самому, потому что я так не считаю. Есть общие принципы, общие конструкции, концепции. Общие для разных языков. И если в каком-то из ЯП поведение отличает от остальных, возникает вопрос - каковы объективные причины такого поведения. .NET разрабатывали неглупые люди, видимо были на то причины. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2015, 18:27 |
|
|
start [/forum/topic.php?fid=20&msg=38964136&tid=1398457]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
54ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
61ms |
get tp. blocked users: |
1ms |
others: | 300ms |
total: | 462ms |
0 / 0 |