powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Наследование и интерфейсы.
384 сообщений из 384, показаны все 16 страниц
Наследование и интерфейсы.
    #39720043
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если subClass наследуется от parentClass, которой реализует iParentable , то вопрос:

считается ли, что subClass реализует iParentable ???
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720044
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортом,

да
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720046
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще мнения?
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720053
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортом,

Какие еще могут быть мнение?
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720058
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtes,

Агнец за бортомсчитается ли,

Ну, хотя бы вопрос - кем считается? )))
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720073
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортомсчитается ли, что subClass реализует iParentable ???он не считается, он реализует
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720094
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А мне кажется, парни, что вы не шарите.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720100
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортомА мне кажется, парни, что вы не шарите.Значит у тебя есть основания считать иначе, ну поделись же, не томи
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720101
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

Что будет в консоли?
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720115
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
игры с new - штука вредная
но пример демонстрирует, что класс Foo реализует iSpeak
а детали реализации - это внутреннее дело класса Foo
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720118
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортомShocker.Pro,

Что будет в консоли?
Тоже мне, бином Ньютона. "i am a parent" будет, потому как перекрытый унаследованный метод метод уже не является виртуальным, и не относится к реализации ISpeak. А поскольку объявленный тип - интерфейс, то вызов (callvirt) будет делаться в соответствии с его таблицей методов.
В IL это видно вполне хорошо:
Код: 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.
.method public hidebysig newslot abstract virtual 
        instance void  SayWord() cil managed
{
} // end of method ISpeak::SayWord
.........................
.method public hidebysig newslot virtual final 
        instance void  SayWord() cil managed
{
  // Размер кода:       13 (0xd)
  .maxstack  8
  IL_0000:  nop
  IL_0001:  ldstr      "i am a parent"
  IL_0006:  call       void [mscorlib]System.Console::WriteLine(string)
  IL_000b:  nop
  IL_000c:  ret
} // end of method Bar::SayWord
..................
.method public hidebysig instance void  SayWord() cil managed
{
  // Размер кода:       13 (0xd)
  .maxstack  8
  IL_0000:  nop
  IL_0001:  ldstr      "i am a slave"
  IL_0006:  call       void [mscorlib]System.Console::WriteLine(string)
  IL_000b:  nop
  IL_000c:  ret
} // end of method Foo::SayWord
............
.method public hidebysig static void  Main() cil managed
{
  .entrypoint
  // Размер кода:       15 (0xf)
  .maxstack  1
  .locals init ([0] class test2.ISpeak 'instance')
  IL_0000:  nop
  IL_0001:  newobj     instance void test2.Foo::.ctor()
  IL_0006:  stloc.0
  IL_0007:  ldloc.0
  IL_0008:  callvirt   instance void test2.ISpeak::SayWord()
  IL_000d:  nop
  IL_000e:  ret
} // end of method Program::Main


И подобное уже обсуждалось.
Только вот какое отношение это всё имеет к утверждению, что класс, унаследовавший реализацию интерфейса от базового, не реализует интерфейс?
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720127
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры ПавловныТолько вот какое отношение это всё имеет к утверждению, что класс, унаследовавший реализацию интерфейса от базового, не реализует интерфейс?
Мальчик открыл для себя модификатор new и решил нас этим удивить
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720129
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий Мух,

Думаю, просто попытался обойти запрет на переопределение невиртуального метода, но ничего не получилось
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720135
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий МухСон Веры ПавловныТолько вот какое отношение это всё имеет к утверждению, что класс, унаследовавший реализацию интерфейса от базового, не реализует интерфейс?
Мальчик открыл для себя модификатор new и решил нас этим удивить

Тебя, вякающего из кустов - сложно чем-то удивить.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720136
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProДмитрий Мух,

Думаю, просто попытался обойти запрет на переопределение невиртуального метода, но ничего не получилось

Что значит обойти? new для этого и предназначен. Как это вообще должно выглядеть "обойти запрет"?))
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720137
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры ПавловныТолько вот какое отношение это всё имеет к утверждению, что класс, унаследовавший реализацию интерфейса от базового, не реализует интерфейс?

Ну а как это воспринять?

Метод помечен new? Помечен.
Работает? Нет.

С virtual всё работает как надо.

Как в JAVA живут без этой мути - решительно не ясно.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720139
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортомЧто значит обойти? new для этого и предназначен. Как это вообще должно выглядеть "обойти запрет"?))
Местные собаководы на эту тему уже высказывались .
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720140
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортомКак в JAVA живут без этой мути - решительно не ясно.
Будет ясно при изучении соотв. матчасти. В яве все методы изначально виртуальные.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720141
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортомДмитрий Мухпропущено...

Мальчик открыл для себя модификатор new и решил нас этим удивить

Тебя, вякающего из кустов - сложно чем-то удивить.
Глупостью тут вообще кого-то сложно удивить.
Кстати, а в прошлый раз не ты ли задавал подобные вопросы, но под другим ником? Очень на тебя похоже.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720143
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий МухГлупостью тут вообще кого-то сложно удивить
Вот если бы УГ, промычал что-то сразу после скрина с кодом, тогда бы еще тебя и имело смысл послушать.

Но так как ты выполз со своим говном после того, как Сон Веры Павловны всё разложил и дал ссылки на темы - цена твоим базарам - ровна тому, что у тебя прёт из-за всех дыр.

Не слишком сложно для тебя? Модератор: Прошу умерить пыл
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720157
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортом,

может уже ответишь на вопрос: какое отношение это всё имеет к утверждению, что класс, унаследовавший реализацию интерфейса от базового, не реализует интерфейс?

ИМХО надо ответить, а не прикрывать хамством свою глупость.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720398
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman MejtesАгнец за бортом,

Какие еще могут быть мнение?subClass наследует iParentable
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720399
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
* наследует реализацию iParentable
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720408
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно ещё витиеватее сформулировать:

Тип subClass наследует данные и функциональность существующего типа parentClass, в том числе и реализацию интерфейса iParentable.

Вот только что от этого изменилось?
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720442
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,
Да. Это коротко и понятно. Упрощает понимание перекрытия методов.
imho
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720471
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy* наследует реализацию iParentable

Получается, что мне надо "знать", устройство базового класса и каким образом "вот это вот всё" будет использоваться.

Потому как фича языка "new" тут не работает.

Что выглядит как баг.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720472
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортомПолучается, что мне надо "знать", устройство базового класса и каким образом "вот это вот всё" будет использоваться.
Такая уж штука, это программирование - надо много чего знать.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720473
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортом,

что тебе надо, никто пока не понял, на фига тебе вообще наследник, а не просто другая реализация интерфейса, или декоратор, или композиция?
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720475
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры ПавловныАгнец за бортомПолучается, что мне надо "знать", устройство базового класса и каким образом "вот это вот всё" будет использоваться.
Такая уж штука, это программирование - надо много чего знать.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720476
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортом,
Про new я не понял твой вопрос, а про то что надо знать знать всю цепочку наследования и да и нет одновременно.
Ведь в памяти это как бы один объект который приводится as или (НовыйТип ) в любой другой из цепочки наследования.
Все логично.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720479
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортом,
Можно попробовать такую дорожную карту:
- в моделировании обойтись без интерфейсов.
- интерфейс добавить после обоснования необходимости оного. Например, для сериализации... Добавить "сбоку"))) новое поведение.
Удачи!
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720482
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры ПавловныАгнец за бортомПолучается, что мне надо "знать", устройство базового класса и каким образом "вот это вот всё" будет использоваться.
Такая уж штука, это программирование - надо много чего знать.

Я про Low Coupling , при чем тут "программирование - такая штука"?

Я наследуюсь от класса, перекрываю метод с new - и думаю, что этого достаточно.

Компилятор пропустит, окей.

Но в рантайме, при приведении к интерфейсу - вызовется метод базового класса.

Мне надо либо:
1. Указать явно, что наследник реализует требуемый интерфейс, что несколько "избыточно", как по мне.
2. Либо использовать virtual в базовом классе, который может быть не моим.
3. Либо привести объект к типу-наследнику, но это вообще бред.

Какие еще варианты? Нету.

Получается, что наследник "как бы реализует интерфейс, но как бы не до конца".

Мутная тема.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720486
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортомМутная тема.
Тебе явно не нужна реализация базового класса, а нужна другая, но при этом написать её для тебя несколько "избыточно".

Действительно мутная тема
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720487
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортомКомпилятор пропустит, окей.нет под рукой студии. Если вообще молчит, тогда согласен с мутной.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720488
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий МухТебе явно не нужна реализация базового класса, а нужна другая, но при этом написать её для тебя несколько "избыточно".

"Зарекалась свинья в грязи валяться".

Есть интерфейс, объявляет 15 методов.

Есть класс А , который их реализует

И мне нужен класс В , который будет вести себя как класс А , за исключением одного метода.

Мне скопировать всю реализацию из А в В ?

Ты нифига о контексте не знаешь, но советы даёшь.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720497
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортомДмитрий МухТебе явно не нужна реализация базового класса, а нужна другая, но при этом написать её для тебя несколько "избыточно".

"Зарекалась свинья в грязи валяться".

Есть интерфейс, объявляет 15 методов.

Есть класс А , который их реализует

И мне нужен класс В , который будет вести себя как класс А , за исключением одного метода.

Мне скопировать всю реализацию из А в В ?

Ты нифига о контексте не знаешь, но советы даёшь.
Декоратор тебе в помощь, дружок.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720499
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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.
interface ILamb
{
    void A();
    void B();
}

class LambOrdinary : ILamb
{
    public void A()
    {
        Console.WriteLine("Ordinary A");
    }

    public void B()
    {
        Console.WriteLine("Ordinary B");
    }
}

class LambOverboard : ILamb
{
    private readonly LambOrdinary lamb = new LambOrdinary();

    public void A()
    {
        lamb.A();
    }

    public void B()
    {
        Console.WriteLine("Overboard B");
    }
}
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720500
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий Мух,

ну или сделай метод виртуальным уже и оверрайди как тебе угодно.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720502
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий Мух,

Это костыль. Который приходиться юзать из-за какого-то бага в архитектуре языка.

И не дружок ты мне, **** ******. )))
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720504
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гы, гы, вот ты сейчас прям так обидно подколол, я аж заплакал.
Под стол небось упал, смеясь как чайка?

Ладно, раз костыль, то ищи решение сам, а я понаблюдаю.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720505
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортом,

и не смей использовать декоратор, **** ******!
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720515
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
interface ILamb
{
    void A();
    void B();
}

class LambOrdinary : ILamb
{
    public void A() => DoA();
    public void B() => DoB();

    protected virtual void DoA() => Console.WriteLine("Ordinary A");
    protected virtual void DoB() => Console.WriteLine("Ordinary B");
}

class LambOverboard : LambOrdinary
{
    protected override void DoB() => Console.WriteLine("Overboard B");
}
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720516
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
дык все интрефейсы в байткоде есть абстрактные типы которых скрыли конструктор ( еслимненеизменяетпамять)
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720566
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортомИ мне нужен класс В , который будет вести себя как класс А , за исключением одного метода.

Нет. Это тебе не нужно.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720567
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttАгнец за бортомИ мне нужен класс В , который будет вести себя как класс А , за исключением одного метода.

Нет. Это тебе не нужно.
)) тоже верно.
У него чисто теоретический вопрос был.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720571
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортомAntonariy* наследует реализацию iParentable

Получается, что мне надо "знать", устройство базового класса и каким образом "вот это вот всё" будет использоваться. А ты как думал? Можно наследовать незнамо что, наугад, закрыв глаза? Или наследовать лишь то, что имеет единственный метод MakeFuckingGood?

Агнец за бортомНо в рантайме, при приведении к интерфейсу - вызовется метод базового класса.Ты явно указываешь, что нужно вызвать метод интерфейса, этот метод реализован в базовом классе, он и вызывается. Если тебе нужен переопределенный метод класса-наследника, приводишь к типу наследника. С какой стати компилятор должен угадывать твои мысли, мол дергая метод наследника ты НА САМОМ ДЕЛЕ хочешь дернуть реализацию интерфейса?

Агнец за бортомМутная тема.Мутная она лишь в том смысле, что ты сам не знаешь, какой метод тебе нужен - базовый или переопределенный.

Агнец за бортомИ мне нужен класс В, который будет вести себя как класс А, за исключением одного метода.
Так все-таки знаешь - переопределенный. Но с какого-то перепугу считаешь, что компилятор должен при обращении к интерфейсу выдавать тебе переопределенный метод. А с какого? Он к интерфейсу не относится от слова совсем. Это чисто метод класса-наследника, он лишь название имеет такое же, как метод интерфейса.

Агнец за бортомКоторый приходиться юзать из-за какого-то бага в архитектуре языка.Это баг не языка, а твоего понимания языка.

А тебе нужно следующее:

Код: 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.
using System.Diagnostics;

static class Module1
{
    public static void Main()
    {
        I1 c = new C2();
        c.Test();
    }
}

public interface I1
{
    void Test();
}

public class C1 : I1
{
    public virtual void Test() => Debug.Print("qwe");
}

public class C2 : C1
{
    public override void Test() => Debug.Print("sdf");

    public void Test2() => Debug.Print("fgh");
    
}

При наличии virtual/override С2.Test связывается с интерфейсом.
При наличии new С2.Test независим от интерфейса, это такой же самостоятельный метод класса как Test2.

Запомни это и не возводи напраслину на язык.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720574
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Или вкратце:

Переопределение методов поддерживает наследование.
Перегрузка методов не поддерживает наследование.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720577
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Соответственно тут:

авторЕсли тебе нужен переопределенный перегруженный метод класса-наследника
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720578
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И далее тоже налажал, под переопределенными перегруженные подразумевал.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720580
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123)) тоже верно.
У него чисто теоретический вопрос был.

Да не нужно это ему.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720583
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий МухМожно ещё витиеватее сформулировать:

Тип subClass наследует данные и функциональность существующего типа parentClass, в том числе и реализацию интерфейса iParentable.

Вот только что от этого изменилось? По сравнению с тем, что написал я - ничего, лишь ненужного порожняка навалил.

Если же сравнивать, что написал я, с тем, что написал ТС - "subClass реализует iParentable" - изменился смысл. Потому что subClass iParentable не реализует, его реализует parentClass, а subClass его наследует.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720585
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyДмитрий МухМожно ещё витиеватее сформулировать:

Тип subClass наследует данные и функциональность существующего типа parentClass, в том числе и реализацию интерфейса iParentable.

Вот только что от этого изменилось? По сравнению с тем, что написал я - ничего, лишь ненужного порожняка навалил.

Если же сравнивать, что написал я, с тем, что написал ТС - "subClass реализует iParentable" - изменился смысл. Потому что subClass iParentable не реализует, его реализует parentClass, а subClass его наследует.
Ладо, ладно, ты гений точных формулировок, только не волнуйся
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720589
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий МухAntonariyпропущено...
По сравнению с тем, что написал я - ничего, лишь ненужного порожняка навалил.

Если же сравнивать, что написал я, с тем, что написал ТС - "subClass реализует iParentable" - изменился смысл. Потому что subClass iParentable не реализует, его реализует parentClass, а subClass его наследует.
Ладо, ладно, ты гений точных формулировок, только не волнуйся Я не волнуюсь, а объясняю очевидные вещи, как оказалось доступные пониманию не только лишь всех, что констатировать зело прискорбно.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720593
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyДмитрий Мухпропущено...

Ладо, ладно, ты гений точных формулировок, только не волнуйся Я не волнуюсь, а объясняю очевидные вещи, как оказалось доступные пониманию не только лишь всех, что констатировать зело прискорбно.
Реализация - это что? Это конкретный функционал.
Наследование - это что? Это когда один тип наследует данные и функционал другого.

Таки чем тебя моя формулировка не устраивает?
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720594
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий МухAntonariyпропущено...
Я не волнуюсь, а объясняю очевидные вещи, как оказалось доступные пониманию не только лишь всех, что констатировать зело прискорбно.
Реализация - это что? Это конкретный функционал.
Наследование - это что? Это когда один тип наследует данные и функционал другого.

Таки чем тебя моя формулировка не устраивает? Ооо, она прекрасна! Распечатай и повесь в рамочку.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720595
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyДмитрий Мухпропущено...

Реализация - это что? Это конкретный функционал.
Наследование - это что? Это когда один тип наследует данные и функционал другого.

Таки чем тебя моя формулировка не устраивает? Ооо, она прекрасна! Распечатай и повесь в рамочку.
Она - это всего лишь стёб. Леса исчезнут, если каждый в рамочку вешать
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720605
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyМожно наследовать незнамо что, наугад, закрыв глаза?

Что за истерика? "Наугад, закрыв глаза.."


AntonariyТы явно указываешь, что нужно вызвать метод интерфейса, этот метод реализован в базовом классе, он и вызывается.

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

AntonariyТак все-таки знаешь - переопределенный.
Antonariyчто ты сам не знаешь, какой метод тебе нужен - базовый или переопределенный.
Ты упоролся что-ли, что значит "всё-таки знаешь"?? Я экземпляр ЯВНО создаю.

AntonariyА тебе нужно следующее:
Это уже пятая прямая/косвенная портянка кода с virtual - то как решить проблему - было известно на момент создания темы. Нафига ты её запостил?

AntonariyПри наличии new С2.Test независим от интерфейса, это такой же самостоятельный метод класса как Test2.

Ты вопрос темы читал? Читал. Ты на него ответил? Ответил. К чему вся эта писанина?

AntonariyПри наличии new С2.Test независим от интерфейса,
Ты можешь почитать, что пишет студия при попытке переопределить метод без new.
Если для того, чтобы понять это надо "лезть" в СIL-код, то это как раз таки хреново реализованная фича языка.

Ибо компилятор это пропускает, когда как по факту, это не то что говнокод - это обфускация.

AntonariyЭто чисто метод класса-наследника, он лишь название имеет такое же, как метод интерфейса.
У интерфейса нет методов, запомни. Методы у классов, когда это усвоишь - тогда welcome и лекции.

В общем - пережевал всё, что было на первой странице - ты слоупок?
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720607
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий Мух
Таки чем тебя моя формулировка не устраивает? \

Да потому что она лажовая.

"Потому что subClass iParentable не реализует, его реализует parentClass, а subClass его наследует."

Скайана, большими буквамии - НЕ РЕАЛИЗУЕТ .

Ты опять облажался.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720608
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Повторение - мать учения.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720610
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyА ты как думал? Можно наследовать незнамо что, наугад, закрыв глаза?

Я расскажу - как я думал.

"Незнамо что" - это мой класс.

Я думал, что применив new - я скрою метод базового класса.

Я думал, что создав объект наследника ВПРЯМУЮ и вызвав метод, который я переопределил - я вызову именно его.

Если наследник НЕ реализует интерфейс, то почему компилятор позволяет привести наследника к типу интерфейса?

Если он делает приведение через базовый класс, то почему это _никак_ не видно? Ни в отладчике, нигде вообще?

В общем - выглядит, как баг. И ведет себя как баг. НЕ-ОЧЕ-ВИД-НО.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720611
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123hVosttпропущено...


Нет. Это тебе не нужно.
)) тоже верно.
У него чисто теоретический вопрос был.

Почему? Наборот - чисто практический.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720612
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортомТы можешь почитать, что пишет студия при попытке переопределить метод без new.
Если для того, чтобы понять это надо "лезть" в СIL-код, то это как раз таки хреново реализованная фича языка.Я отродясь туда не лазил, мне достаточно браузер объектов посмотреть, чтобы понять, кто и как себя ведет.

Агнец за бортомИбо компилятор это пропускает, когда как по факту, это не то что говнокод - это обфускация.То есть ты ниасилил наследование и shadowing настолько, что тебе нужно лезть в CIL, чтобы понять, как работает первое и второе, а виноват в этом язык? Оригинально.

Вот тут табличка есть, авось осилишь: https://www.c-sharpcorner.com/UploadFile/ff2f08/overriding-vs-shadowing-in-C-Sharp/
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720613
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyПереопределение методов поддерживает наследование.
Перегрузка методов не поддерживает наследование.

Я это не смог дешифровать.

Что значит поддерживает?

Где ты увидел перегрузку? Это ты с легкой руки new отнёс с перегрузке?
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720615
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортомAntonariyА ты как думал? Можно наследовать незнамо что, наугад, закрыв глаза?

Я расскажу - как я думал.

"Незнамо что" - это мой класс.

Я думал, что применив new - я скрою метод базового класса.

Я думал, что создав объект наследника ВПРЯМУЮ и вызвав метод, который я переопределил - я вызову именно его.

Если наследник НЕ реализует интерфейс, то почему компилятор позволяет привести наследника к типу интерфейса?Потому что он его наследует. Это его тип.

Агнец за бортомЕсли он делает приведение через базовый класс, то почему это _никак_ не видно?Вообще-то это азы ООП. Отродясь так было, и даже смотреть там не на что.

Агнец за бортомВ общем - выглядит, как баг. И ведет себя как баг. Как баг твоего образования.
Агнец за бортомНЕ-ОЧЕ-ВИД-НО.
Почему-то всем остальным это очевидно как дважды два.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720617
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyПочему-то всем остальным это очевидно как дважды два.

Фигня. Ты единственный тут сказал, что наследник НЕ РЕАЛИЗУЕТ интерфейс. За это плюс конечно.
До этого момента все, которым это было "очевидно как дважды два" топили за "какие еще тут могут быть мнения".
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720619
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортомДмитрий МухТаки чем тебя моя формулировка не устраивает? \

Да потому что она лажовая.

"Потому что subClass iParentable не реализует, его реализует parentClass, а subClass его наследует."

Скайана, большими буквамии - НЕ РЕАЛИЗУЕТ .

Ты опять облажался.
Ты бы читать сначала научился, прежде чем на лажу указывать.

"Тип subClass наследует данные и функциональность существующего типа parentClass, в том числе и реализацию интерфейса iParentable".

Реализует parentClass, subClass наследует...

Всё как ты и хотел, **** ******. )))
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720620
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортомAntonariyПереопределение методов поддерживает наследование.
Перегрузка методов не поддерживает наследование.

Я это не смог дешифровать.

Что значит поддерживает?

Где ты увидел перегрузку? Это ты с легкой руки new отнёс с перегрузке?Да, я с легкой руки перевел на русский терминологию VB, потому что она более адекватно описывает то, что символизирует:

Код: 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.
Public Interface I1
    Sub Test()
End Interface

Public Class C1
    Implements I1

    Public Overridable Sub Test() Implements I1.Test
        Debug.Print("qwe")
    End Sub

    Public Sub Test2()
        Debug.Print("rty")
    End Sub
End Class

Public Class C2
    Inherits C1

    Public Overrides Sub Test()
        Debug.Print("sdf")
    End Sub

    Public Overloads Sub Test2()
        Debug.Print("fdsg")
    End Sub

End Class

Благодаря терминологии VB, адекватно описывающей поведение объектов словами Implements, Inherits, Ovverridable, MustOverride, NotOverridable, Overloads, Shadows и т.д., мне более чем очевиден весь ООП дотнета.

Не то что abstract, virtual и new - зная ООП и не зная C# хрен догадаешься, о чем это. Хоть override оставили, правда s потеряв.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720621
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий МухТы бы читать сначала научился,

Всё верно, вопрос прочитай в самом начале топика. Реализует или НЕ реализует.

Какой же ты вывертливо-мерзотный... Лажаешь и юлишь.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720622
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортомДмитрий МухТы бы читать сначала научился,

Всё верно, вопрос прочитай в самом начале топика. Реализует или НЕ реализует.

Какой же ты вывертливо-мерзотный... Лажаешь и юлишь.
Я не лажаю и не юлю. Я смеюсь над куском идиота
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720623
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортом,

кстати Timing-то покажи, **** ******. )))
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720624
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий Мух,

ПНХ.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720627
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортом,

ХТ, **** ******. )))
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720629
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OFF
Агнец за бортомПочему? Наборот - чисто практический.ну это просто.
Практический вопрос это на ранг выше. Т.е. Предметка с именами сущностей в предметной области.
И зачем нужен класс поправленным интерфейсом.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720631
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariyзная ООП и не зная C# хрен догадаешься, о чем это.)
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720632
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,

Подытоживая:

1. Наследник всё же реализует интерфейс, который имплементирует его базовый класс.
2. Но - делает это через базовый класс.

По поводу формулировок "реализует" - не знаю, как в управляемом коде получить доказательство обратного.

Код: c#
1.
2.
3.
Child child = new Child();

var isImplements = child is iFoo; //true
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720633
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123OFF
Агнец за бортомПочему? Наборот - чисто практический.ну это просто.
Практический вопрос это на ранг выше. Т.е. Предметка с именами сущностей в предметной области.
И зачем нужен класс поправленным интерфейсом.

Ваще не понял. Что "просто"?

Я ж написал - interface 15 методов.

Основной класс / модифицированный в одном методе.

Что тут обсуждать?
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720638
Igor Barchenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортом,

SOLID — буква «L» в аббревиатуре означает Принцип подстановки Барбары Лисков (англ. Liskov Substitution Principle)
советую почитать.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720639
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Igor BarchenkoАгнец за бортом,

SOLID — буква «L» в аббревиатуре означает Принцип подстановки Барбары Лисков (англ. Liskov Substitution Principle)
советую почитать.вот вот....
+1.
Предлагаю про Практику, а не абстрактный 1 из 15, обсудить завтра.. на работе)
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720640
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Igor BarchenkoАгнец за бортом,

SOLID — буква «L» в аббревиатуре означает Принцип подстановки Барбары Лисков (англ. Liskov Substitution Principle)
советую почитать.

Читать вообще полезно. При чем тут это?

Petro123вот вот....
+1.
Почитал? )))
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720641
Igor Barchenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортом,

при том что ты задачу применения DI решаешь полиморфизмом, что противоречит SOLID. Сделать можно, но потом искать эти костыли...
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720643
Igor Barchenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Надо тебе другое поведение - пиши новый класс, реализующий интерфейс. Пиши фабрику реализующую DI, а не лепи полиморфизм там где его не применять.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720645
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортомПочитал? )))ну ты упрямый).
Я выше сказал предметку давай.
И ссылку я прочитал.
А ты только мячик кидаешь туда сюда.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720647
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортомПо поводу формулировокВсе формулировки, что я использовал, относятся ТОЛЬКО к исходникам. ООП - это же про исходники.

Поэтому с точки зрения исходников
Агнец за бортом1. Наследник всё же реализует интерфейсэто неверно. Где код реализации в наследнике? Нет его, он в родителе. Однако, тип наследника - составной. Он состоит из интерфейса, реализованного родителем, интерфейса самого родителя и собственного интерфейса. Не считая вездесущего object :). Поэтому объект финального типа можно привести к любому типу, из которых он состоит.

К слову - набор собственных членов класса тоже называется интерфейсом (обобщающее название), и не нужно путать это название и интерфейс-элемент ООП и холиварить по этому поводу, мол у потомка нет реализованных интерфейсов. В TLB, например, собственный набор членов класса все равно описывается отдельным интерфейсом-элементом языка. Таким образом, "интерфейс класса" - это просто набор его публичных членов.

Да и "приведение типов" - условность. Никакого действия под названием "приведение" над объектом не происходит, приведение типов не компилируется в какие-то инструкции (по крайней мере в VB6), происходит лишь указание компилятору, методы какого интерфейса нужно дергать. Поэтому с точки зрения компилятора "наследник реализует интерфейс" - правда. С его точки зрения даже иерархии никакой нет - просто плоская таблица методов, обращение к которым идет по адресам (вернее смещениям), которые вычисляются на этапе компиляции, исходя из порядка объявления интерфейсов и их членов (опять же потроха VB6 описываю, дотнетовские слабо представляю). И вот с этого момента начинаются срачи - реализует/не реализует.

Граждане разработчики, а вы бинарники что ли пишете? Нет? Ну и не лезьте под руку компилятору, он в ООП разберется как сочтет нужным, а вы в лучше в исходниках не путайтесь и описывайте их на словах адекватно, чтобы слушатель не искал реализацию интерфейса в наследнике, которой там нет.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720649
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Igor BarchenkoАгнец за бортом,

при том что ты задачу применения DI решаешь полиморфизмом, что противоречит SOLID. Сделать можно, но потом искать эти костыли...

Не понимаю, ты не представляешь себе ситуации, где надо изменить _один_ метод у уже готовой реализации класса?

Многое зависит от того, что считать "поведением" программы. Его ты не знаешь. Что обсуждать? А выражать можно что угодно, через что угодно - смотря по ситуации.


Antonariyэто неверно. Где код реализации в наследнике? Нет его, он в родителе.
Ок.


AntonariyПоэтому с точки зрения компилятора "наследник реализует интерфейс" - правда.
Ок.

Вывод на самом деле "неожиданный". Фраза, которую я видел не то в приводимой выше ветке, не то где-то в нете - "если вы используете new - значит вы делаете что-то неправильно".

Самый ценный вывод из этой ветки.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720650
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyГраждане разработчики, а вы бинарники что ли пишете? Нет? Ну и не лезьте под руку компилятору,не согласен.
Говорит же компилятор что у абстрактного метода нет реализации в потомках.
Об этом и тема, моё имхо. Чтобы предупреждал).
А вот верна ли постановка - мало информации.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720651
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортомНе понимаю, ты не представляешь себе ситуации, где надо изменить _один_ метод у уже готовой реализации класса?

Ну вообще, это закладывается. И методы, которые могут быть изменены закрывают внутри реализации и делают их virtual protected .

Заменить просто так работу какого-то метода... Ну это попахивает говнокодингом, при чём сильно.

Но если отмахнуться, и сказать, да мне типа пофигу, надо и всё. Ну если надо, делай типа копипаст, а какая разница-то? Если говнокодить, до уже пофигу как.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720654
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ООП - говно :):):)
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720655
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosООП - говно :):):)

Жизнь полна разочарований особенно для некоторых )
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720678
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttЗаменить просто так работу какого-то метода...

Ога, прикинь? Или надо письмо разрабы писать, можно я унаследуюсь, мне там ерунда нужна.

Или у тебя опять флудо-генератор включился? Что характерно, к концу ветки - риск выставить себя дебилом ниже обычного; но знаешь, хвост, он ещё есть.)))
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720681
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С учетом вышеописанного, что сигнатуру базовых методов менять нельзя, но требуется использовать интерфейс IParantable - тогда я бы запулил шаблон Proxy . В 14 из 15 методах сделал бы вызов метода базового класса. В 15ом, требующем коррекции - запулил бы свою реализацию.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720682
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PallarisВ 14 из 15 методах сделал бы вызов метода базового класса.
Мне вот интересно - чего ради вся эта писанина? Работа ради работы?

Из кейса ветки очевидных выхода два:

1. virtual/override (если есть доступ к базовому классу)
2. явное указание реализации интерфейса iParentable в классе-наследнике.

Минимум кода.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720683
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyПоэтому с точки зрения исходников
Агнец за бортом1. Наследник всё же реализует интерфейсэто неверно. Где код реализации в наследнике? Нет его, он в родителе.
А что тогда по твоему в этом случае:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
interface ILamb
{
    void A();
    void B();
}

class LambOrdinary : ILamb
{
    public void A() => DoA();
    public void B() => DoB();

    protected virtual void DoA() => Console.WriteLine("Ordinary A");
    protected virtual void DoB() => Console.WriteLine("Ordinary B");
}

class LambOverboard : LambOrdinary
{
    protected override void DoB() => Console.WriteLine("Overboard B");
}


Наследник реализует, или не реализует, или частично реализует интерфейс?
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720685
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyГраждане разработчики, а вы бинарники что ли пишете? Нет? Ну и не лезьте под руку компилятору, он в ООП разберется как сочтет нужным, а вы в лучше в исходниках не путайтесь и описывайте их на словах адекватно, чтобы слушатель не искал реализацию интерфейса в наследнике, которой там нет.
Ты столкнулся с наследниками, в которых нет кода что-ли?

Адекватные граждане разработчики бастардов не клепают!
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720686
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортом,
Второй метод не катит. Увы.
авторОдни языки программирования (например, C++, C#) требуют явно указывать, что данный метод является виртуальным. В других языках (например, Java, Python) все методы являются виртуальными по умолчанию (но только те методы, для которых это возможно; например в Java методы с доступом private не могут быть переопределены в связи с правилами видимости).
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720688
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Второй метод не катит. Увы.

Что значит "не катит"? Компилятор в попапе пишет "no katit"?

авторВ других языках (например, Java, Python) все методы являются виртуальными по умолчанию
И как живут - беспредел же.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720692
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортомИли надо письмо разрабы писать, можно я унаследуюсь, мне там ерунда нужна.дописать свой метод в наследнике...
Будет прямо по барбаре лисковой)))
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720693
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортом,
Про компилятор я с тобой согласен.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720695
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортомИ как живут - беспредел же."ты на святое покушаешься")))).
Вопрос, почему в шарпе как в дельфи у хуже чем в java надо было сразу в заголовке темы написать).
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720696
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортомPallarisВ 14 из 15 методах сделал бы вызов метода базового класса.
Мне вот интересно - чего ради вся эта писанина? Работа ради работы?
Как тебе такой интерфейс: IBucket Methods ?

222 метода против твоих 15.

Задача: обернуть в Circuit Breaker .
Чтобы если дёргаешь метод бакета, а в этот момент Couchbase отвалился, то срабатывал предохранитель и приложение спокойно работало себе дальше.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720707
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортомPallarisВ 14 из 15 методах сделал бы вызов метода базового класса.
Мне вот интересно - чего ради вся эта писанина? Работа ради работы?

Из кейса ветки очевидных выхода два:

1. virtual/override (если есть доступ к базовому классу)
2. явное указание реализации интерфейса iParentable в классе-наследнике.

Минимум кода.


Минимум-то минимум, но чревато. Нужно четко понимать, что делаешь, и как код будет использоваться

Код: 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.
public interface IFoo
    {
        void A();
    }

    public class Foo : IFoo
    {
        public void A()
        {
            Console.WriteLine("Foo:A()");
        }
    }

    public class FooDerived : Foo, IFoo
    {
        void IFoo.A()
        {
            Console.WriteLine("FooDerived:A()");
        }
    }


    class Program
    {
        static void Main(string[] args)
        {
            IFoo a = new FooDerived();
            a.A(); //FooDerived:A()
            
            var b = (Foo) a;
            b.A(); //Foo:A()

            var c = (FooDerived) a;
            c.A(); //Foo:A()
        }
    }
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720716
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PallarisНужно четко понимать, что делаешь, и как код будет использоватьсяТС за это и топит.
Нафига оператор new для метода, если он то применяется то нет и компилятор молчит?
Я сам никогда не мешаю интерфейсы и обычные методы класса. И за то чтобы была однозначность. Либо переопределяем метод наследнике, либо нет..... Нельзя. Тогда будет простой хак класса.
Imho
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720733
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий МухAntonariyПоэтому с точки зрения исходников
пропущено...
это неверно. Где код реализации в наследнике? Нет его, он в родителе.
А что тогда по твоему в этом случае:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
interface ILamb
{
    void A();
    void B();
}

class LambOrdinary : ILamb
{
    public void A() => DoA();
    public void B() => DoB();

    protected virtual void DoA() => Console.WriteLine("Ordinary A");
    protected virtual void DoB() => Console.WriteLine("Ordinary B");
}

class LambOverboard : LambOrdinary
{
    protected override void DoB() => Console.WriteLine("Overboard B");
}


Наследник реализует, или не реализует, или частично реализует интерфейс? наследник наследует, дурня ты кусок.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720737
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в случае с override - переопределяет поведение, но не сигнатуру.
в случае с new - переопределяет и поведение и сигнатуру.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720739
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Нафига оператор new для метода, если он то применяется то нетчто значит "то нет"? в зависимости от погоды что ли?

Petro123 и компилятор молчит?А о чем он должен говорить?
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720740
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariyв случае с override - переопределяет унаследованное поведение, но не сигнатуру.поправил
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720743
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PallarisМинимум-то минимум, но чревато. Нужно четко понимать, что делаешь, и как код будет использоваться
Ну вообще тот же Рихтер утверждает, что EIMI нужно избегать, наколько это возможно, и использовать, только когда другого выхода нет, потому как потенциальных граблей в нем больше, чем плюсов. В это плане у EIMI с new много общего.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720747
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,
Я одним оператором переопределяю метод в наследнике. А внутри хочу вызываю базовый Папы метод, хочу не вызываю.
Получается один оператор в наследнике и один в базовом virtual.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720749
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyА о чем он должен говорить?что вызов будет базового хотя оператор new
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720750
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyА о чем он должен говорить?что вызов будет базового хотя оператор new. Задача не выполнена.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720755
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123AntonariyА о чем он должен говорить?что вызов будет базового хотя оператор new. Задача не выполнена.
Вообще-то new как раз и предназначен, чтобы компилятор молчал. Потому как всё, что делает этот new - это просто тупо подавление предупреждения компиляции. Скрытие метода вполне возможно и без new, но тогда компилятор будет выдавать предупреждения. Больше никакой другой магии в этом new нет.
А если программист сам собственноручно поставил в перекрытый метод new - значит, он вполне отдает себе отчет в том, что сделал, и чем это чревато. Ну, по крайней мере, наверное, разработчики компилятора так думают.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720758
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123AntonariyА о чем он должен говорить?что вызов будет базового хотя оператор newЕсли ты сам сокрыл (вот так правильно это методика называется - shadowing) базовый метод новым через new, а потом сам же вызвал из нового базовый, то причем тут компилятор? Ты в бессознательном состоянии код пишешь что ли? С какой стати компилятор должен тебе сообщать то, что ты сам же и делаешь? Может он еще должен арифметические операции комментировать? "Ахтунг, использован оператор +, следовательно произойдет сложение, а нихрена не вычитание!!11адин"
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720768
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры ПавловныPetro123пропущено...
что вызов будет базового хотя оператор new. Задача не выполнена.
Вообще-то new как раз и предназначен, чтобы компилятор молчал.Вообще-то вот, что по этому поводу в MSDN написано:

https://docs.microsoft.com/en-us/dotnet/visual-basic/programming-guide/language-features/declared-elements/shadowing The main purpose of shadowing is to protect the definition of your class members. The base class might undergo a change that creates an element with the same name as one you have already defined. If this happens, the Shadows modifier forces references through your class to be resolved to the member you defined, instead of to the new base class element.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720773
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyСон Веры Павловныпропущено...

Вообще-то new как раз и предназначен, чтобы компилятор молчал.Вообще-то вот, что по этому поводу в MSDN написано:

https://docs.microsoft.com/en-us/dotnet/visual-basic/programming-guide/language-features/declared-elements/shadowing The main purpose of shadowing is to protect the definition of your class members. The base class might undergo a change that creates an element with the same name as one you have already defined. If this happens, the Shadows modifier forces references through your class to be resolved to the member you defined, instead of to the new base class element.
Да, только этот shadowing вполне делается и без new.
Вот код, с которого всё началось:
Код: 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.
class Program
{
  static void Main()
  {
    ISpeak instance = new Foo();
    instance.SayWord();
    Console.WriteLine("done");
    Console.ReadKey(true);
  }
}

interface ISpeak
{
  void SayWord();
}

class Bar: ISpeak
{
  public void SayWord()
  {
    Console.WriteLine("i am a parent");
  }
}

class Foo: Bar
{
  public new void SayWord()
  {
    Console.WriteLine("i am a slave");
  }
}


IL-код и метаданные метода Foo.SayWord:
Код: 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.
.method public hidebysig instance void  SayWord() cil managed
{
  // Размер кода:       13 (0xd)
  .maxstack  8
  IL_0000:  nop
  IL_0001:  ldstr      "i am a slave"
  IL_0006:  call       void [mscorlib]System.Console::WriteLine(string)
  IL_000b:  nop
  IL_000c:  ret
} // end of method Foo::SayWord

TypeDef #4 (02000005)
-------------------------------------------------------
  TypDefName: test2.Foo  (02000005)
  Flags     : [NotPublic] [AutoLayout] [Class] [AnsiClass] [BeforeFieldInit]  (00100000)
  Extends   : 02000004 [TypeDef] test2.Bar
  Method #1 (06000006) 
  -------------------------------------------------------
    MethodName: SayWord (06000006)
    Flags     : [Public] [HideBySig] [ReuseSlot]  (00000086)
    RVA       : 0x00002094
    ImplFlags : [IL] [Managed]  (00000000)
    CallCnvntn: [DEFAULT]
    hasThis 
    ReturnType: Void
    No arguments.
  -------------------------------------------------------


Теперь убираем new:
Код: c#
1.
2.
3.
4.
5.
6.
7.
class Foo: Bar
{
  public void SayWord()
  {
    Console.WriteLine("i am a slave");
  }
}


Код: 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.
.method public hidebysig instance void  SayWord() cil managed
{
  // Размер кода:       13 (0xd)
  .maxstack  8
  IL_0000:  nop
  IL_0001:  ldstr      "i am a slave"
  IL_0006:  call       void [mscorlib]System.Console::WriteLine(string)
  IL_000b:  nop
  IL_000c:  ret
} // end of method Foo::SayWord

TypeDef #4 (02000005)
-------------------------------------------------------
  TypDefName: test2.Foo  (02000005)
  Flags     : [NotPublic] [AutoLayout] [Class] [AnsiClass] [BeforeFieldInit]  (00100000)
  Extends   : 02000004 [TypeDef] test2.Bar
  Method #1 (06000006) 
  -------------------------------------------------------
    MethodName: SayWord (06000006)
    Flags     : [Public] [HideBySig] [ReuseSlot]  (00000086)
    RVA       : 0x00002094
    ImplFlags : [IL] [Managed]  (00000000)
    CallCnvntn: [DEFAULT]
    hasThis 
    ReturnType: Void
    No arguments.
  -------------------------------------------------------


- как говорится, найдите 10 отличий.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720774
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры Павловны,
Я не пойму. Всех ЯП задача чтобы компилятор замолчал решается аннотациями и другими средствами.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720783
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Сон Веры Павловны,
Я не пойму. Всех ЯП задача чтобы компилятор замолчал решается аннотациями и другими средствами.

Типичное применение new по мнению разработчиков такое: юзал ты какую-то библиотеку (1й слой), наследовался от ее классов, дополнял наследников своими методами, создавая промежуточный слой (2й), и этот слой пошел в дальнейшее использование другими разработчиками (3го слоя). А тут фигакс - в библиотеке появился метод, имеющий такое же название, как у тебя в наследнике, но с другой сигнатурой, другим функционалом, а на твоего наследника уже куча говнокода, использующего этот метод, в 3м слое накручено. Получается несовместимость, и чтобы не переименовывать метод, заставляя волком выть разработчиков 3го слоя, тебе дается возможность сокрыть нахрен метод 1го слоя.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720793
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyТипичное применение new по мнению разработчиковтолько в шарпе?

Antonariyюзал ты какую-то библиотеку (1й слой),пример mdac

Antonariyсоздавая промежуточный слой (2й),пример ADOCommand обертка.

Antonariyразработчиками (3го слояпример, отдали клиенту.

AntonariyА тут фигакс - в библиотеке появился метод, имеющий такое же название, как у тебя в наследнике, но с другой сигнатурой,
Подробнее про Фигас. Как это случилось что появился наследник без компиляции.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720801
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyДмитрий Мухпропущено...

А что тогда по твоему в этом случае:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
interface ILamb
{
    void A();
    void B();
}

class LambOrdinary : ILamb
{
    public void A() => DoA();
    public void B() => DoB();

    protected virtual void DoA() => Console.WriteLine("Ordinary A");
    protected virtual void DoB() => Console.WriteLine("Ordinary B");
}

class LambOverboard : LambOrdinary
{
    protected override void DoB() => Console.WriteLine("Overboard B");
}



Наследник реализует, или не реализует, или частично реализует интерфейс? наследник наследует, дурня ты кусок.
Что это значит, умника щепотка?

Реализация метода B в наследнике полностью своя, метода A унаследованная.
Как ты трактуешь такую ситуацию, когда половина реализации своя, а половина от базового класса?
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720802
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортомhVosttЗаменить просто так работу какого-то метода...

Ога, прикинь? Или надо письмо разрабы писать, можно я унаследуюсь, мне там ерунда нужна.

Или у тебя опять флудо-генератор включился? Что характерно, к концу ветки - риск выставить себя дебилом ниже обычного; но знаешь, хвост, он ещё есть.)))

Надо понимать, что если ты хочешь изменить ни с того ни с сего работу одного метода, когда это не было изначально заложено разработчиком класса -- ты определённо собираешься написать говнокод.

Это матьево железобетонный факт. То, что ты не хочешь смириться с этим, пытаясь перевести всё на плоскость флуда, означает, что ты не хочешь разобраться, а хочешь тупо впарить нам какую-то лажу. Ничего страшного, я не против. Впаривай
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720846
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttкогда это не было изначально заложено разработчиком класса -- ты определённо собираешься написать говнокод.

Вся JAVA - говнокод?

Все шарповские методы расширения - говнокод?

Оператор new - говнокод?

Очень сложно писать нормальный код, которым можно было бы гордиться, когда повсюду... Говнокод.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720857
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортомВся JAVA - говнокод?
В яве все методы виртуальные, выше уэто упоминалось.
Агнец за бортомВсе шарповские методы расширения - говнокод?
Тоже мимо, методы расширения не включаются в vtable класса, и не формируют его контракт.
Агнец за бортомОператор new - говнокод?
В 90% случаев - да. Особенно если вся кодовая база - собственная.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720859
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры ПавловныВ 90% случаев - да. Особенно если вся кодовая база - собственная.+1
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720868
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортом,

Ты зря бомбишь. Речь идёт о классе и его методах.

О принципах SOLID уже сказали.
О декораторе уже сказали.
Это всё с точки зрения проектирования, не "впихнуть невпихнуемое".

К вопросу, типа клал я на все эти принципы, как мне нагавнякать? Я отвечаю -- да хоть копипастом.
Пофигу :)
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720869
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортомОператор new - говнокод?

Бред вообще какой-то.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720871
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортомОчень сложно писать нормальный код, которым можно было бы гордиться, когда повсюду... Говнокод.


Если даже не пытаться и не думать головой, то будет 100% говнокод.
А идеального не существует. Это известно.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720891
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры ПавловныВ 90% случаев - да. Особенно если вся кодовая база - собственная.

Можно пояснить? Поголовный DI?
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720910
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМожно пояснить? Поголовный DI?
hVosttАгнец за бортомНе понимаю, ты не представляешь себе ситуации, где надо изменить _один_ метод у уже готовой реализации класса?

Ну вообще, это закладывается. И методы, которые могут быть изменены закрывают внутри реализации и делают их virtual protected .

Заменить просто так работу какого-то метода... Ну это попахивает говнокодингом, при чём сильно.
hVosttНадо понимать, что если ты хочешь изменить ни с того ни с сего работу одного метода, когда это не было изначально заложено разработчиком класса -- ты определённо собираешься написать говнокод.
Это матьево железобетонный факт.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720917
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123AntonariyА тут фигакс - в библиотеке появился метод, имеющий такое же название, как у тебя в наследнике, но с другой сигнатурой,
Подробнее про Фигас. Как это случилось что появился наследник без компиляции.А кто сказал, что он появился без компиляции?

Возьмем твой, например, класс DBCommand, в нем нет метода OpenXmlReader. Ты унаследовал собственный класс MyCommand от DBCommand, сделал метод OpenXmlReader, скомпилировал собственную библиотеку доступа к данным и отдал разработчикам. Прошел год, разработчики наколбасили кода, использующего MyCommand.OpenXmlReader, и тут выходит обновление фреймворка, в котором у DBCommand появился метод OpenXmlReader. Что делает твой проект? Начинает предупреждать: "MyCommand.OpenXmlReader()" скрывает наследуемый член "DBCommand.OpenXmlReader()". Если скрытие было намеренным, используйте ключевое слово new.

Я уже и забыл, что одноименные методы можно совершенно свободно использовать, и методы потомка перекрывают методы родителя. И как раз в этом случае компилятор предупреждает, чего ТСу от него так не хватало.

И Сон Веры Павловны правильно сказал - new используется лишь для подавления этого предупреждения.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720921
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAAntonariyпропущено...
наследник наследует, дурня ты кусок.
Что это значит, умника щепотка?

Реализация метода B в наследнике полностью своя, метода A унаследованная.
Как ты трактуешь такую ситуацию, когда половина реализации своя, а половина от базового класса?Так и трактую - половина унаследована, половина переопределена.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720925
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры ПавловныhVosttМожно пояснить? Поголовный DI?
hVosttпропущено...


Ну вообще, это закладывается. И методы, которые могут быть изменены закрывают внутри реализации и делают их virtual protected .

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

И при чём тут new?
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720928
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пля.... вы что про new для переопределения метода? ну ё-моё....

Нельзя чтоли было сказать перекрытие метода ?
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720930
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttИ при чём тут new?
При том, что ТС всё вышеописанное (изменить ни с того ни с сего работу одного метода, когда это не было изначально заложено разработчиком класса) как раз с помощью new и сделал.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720931
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttПля.... вы что про new для переопределения метода? ну ё-моё....

Да тут вся тема об этом..
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720932
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Перекрытие метода это вообще баг языка.
Добавили видимо для болванов, не осиливших ни ООП, ни архитектурных приёмов.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720935
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttПля.... вы что про new для переопределения метода? ну ё-моё....
Ну не про вызов же конструктора. Выше употреблялся термин "перекрытие", но для краткости, и поскольку вся эта дискуссия про перекрытие, местами использовался new.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720938
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttПерекрытие метода это вообще баг языка.

Что я слышу... o_O
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720939
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttПерекрытие метода это вообще баг языка.
Добавили видимо для болванов, не осиливших ни ООП, ни архитектурных приёмов.
Да, кстати, в той же яве такая штука невозможна. Если уж запечатали метод final'ом, то всё, приехали. А у нас и sealed-методы перекрывай, сколько влезет.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720941
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортомhVosttПерекрытие метода это вообще баг языка.

Что я слышу... o_Oя тоже две страницы тупил что за new))))))
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720950
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyПрошел год, разработчики наколбасили кодаобычное дело. Перколбасят.
DevExpress конвертеры выпускает. В java deprecated пометка будет 3 года висеть перед глазами. И т. д.
Тут же сборки и версии сборок в шарпе для этого.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39720995
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры ПавловныhVosttПля.... вы что про new для переопределения метода? ну ё-моё....
Ну не про вызов же конструктора. Выше употреблялся термин "перекрытие", но для краткости, и поскольку вся эта дискуссия про перекрытие, местами использовался new.

Ну... блин.. перекрытие вообще не надо обсуждать. За использование new для перекрытия надо бить. БОльно.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39721002
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нормальные темы глохнут на 1 странице, а обсуждение какой то фигни уже идет 6 страниц подряд :) как так то?
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39721006
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtesнормальные темы глохнут на 1 странице, а обсуждение какой то фигни уже идет 6 страниц подряд :) как так то?

А у тебя мнение не поменялось?

Реализует или нет?
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39721020
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортомRoman Mejtesнормальные темы глохнут на 1 странице, а обсуждение какой то фигни уже идет 6 страниц подряд :) как так то?

А у тебя мнение не поменялось?

Реализует или нет?провокатор))
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39721048
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
using System;

public interface IFoo
{
    void A();
}

public class ClassA : IFoo
{
    void IFoo.A()
    {
        Console.Write("S");
    }

    protected void InvokeA(Type type)
    {
        var map = type.GetInterfaceMap(typeof(IFoo));
        map.TargetMethods[0].Invoke(this, null);
    }
}

public class ClassB : ClassA, IFoo
{
    void IFoo.A()
    {
        Console.Write("A");
    }

    public virtual void A()
    {
        InvokeA(typeof(ClassA));
        InvokeA(typeof(ClassB));
        Console.Write("M");
    }
}

public class ClassC : ClassB, IFoo
{
    void IFoo.A()
    {
        Console.Write(" ");
        Console.Write("D");
    }

    public override void A()
    {
        base.A();
        InvokeA(typeof(ClassC));
        Console.Write("U");
    }
}

public sealed class ClassD : ClassC, IFoo
{
    void IFoo.A()
    {
        base.A();
        Console.Write("R");
    }

    public override void A()
    {
        ((IFoo)this).A();
        Console.Write("A");
        B();
    }

    public void B()
    {
        Console.Write("K");
    }
}


class Program
{
    static void Main(string[] args)
    {
        var classD = new ClassD();
        classD.A();
        Console.ReadKey();
    }
}
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39721079
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Фаулер "70 Паттернов ООП" - http://make-self.net/item/soedinenie-derevyannih-detaley.html
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39721088
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosФаулер "70 Паттернов ООП" - http://make-self.net/item/soedinenie-derevyannih-detaley.html

Воу воу, да ты еретик! ООП же #$)*$#
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39721092
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

Я думаю они кроме строительства ничего не читали, им надо бы начинать изучать архитектуру машин и механизмов, способы формообразования и трансформации, во блин появятся тыщи новых паттернов
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39721096
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRoshVostt,

Я думаю они кроме строительства ничего не читали, им надо бы начинать изучать архитектуру машин и механизмов, способы формообразования и трансформации, во блин появятся тыщи новых паттернов

да не.. судя по твоему настрою, тру инженер на х вертел всякие методички по проектированию архитектуры машин, механизмов, и вот это вот всё. настоящий инженер -- художник, должен делать "как видит", а не как где-то там написано..
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39721114
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

Конечно, а то будешь легостроителем
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39721640
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортом
Если наследник НЕ реализует интерфейс, то почему компилятор позволяет привести наследника к типу интерфейса?


Более того, код ниже прекрасно компилируется и выполняется!
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
   static void Main(string[] args)
        {

            var c1 = new C1();
            var i1 = c1 as I1;
            i1?.M1();
            Console.ReadLine();
        }

        public interface I1
        {
            void M1();
        }

        public class C1
        {
            public new void M1()
            {
                Console.WriteLine("sql.ru");
            }
        }
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39721662
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВ,

отэтот тож компилируется и выполняется

Код: 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.
        public static void Main(string[] args)
        {

            var c1 = new C1();
            var i1 = c1 as IMuhahahahah;
            i1?.VseRabotaet();
            Console.ReadLine();
        }

        public interface I1
        {
            void M1();
        }
	
	public interface IMuhahahahah
        {
            void VseRabotaet();
        }

        public class C1
        {
            public new void M1()
            {
                Console.WriteLine("sql.ru");
            }
        }
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39721669
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

потому и говно
еще можно так select ишак from petro123
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39721795
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВБолее того, код ниже прекрасно компилируется и выполняется!
Но для умеющих читать выхлоп канпелятора будет намек:

Код: plaintext
1>...\Program.cs(107,19,107,23): warning CS0109: The member 'C1.M1()' does not hide an accessible member. The new keyword is not required.

Для счастливых обладателей решарпера будет еще один намек:
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39721798
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosговно
ViPRosишак
Тебя как пустили в приличное общество(
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39721809
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123ViPRosговно
ViPRosишак
Тебя как пустили в приличное общество(

+1

Тутошнее общество не без душка.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39721854
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортомPetro123пропущено...

пропущено...

Тебя как пустили в приличное общество(

+1

Тутошнее общество не без душка.
А кто образец вежливости и конструктива? Сон Веры Павловны? Всем равняться на него?
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722010
Addx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попытался осилить тему. Не смог. Поясните, уважаемые.
1. Вопрос в том, что разработчики .net не правы введя слово new? Оно мешает? Его наличие вводит в заблуждение?
2. Почему нельзя сделать явную реализацию интерфейса в наследнике?
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722015
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Addx,

1. Оно избыточно.
2. Зачем?
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722036
Addx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Addx,

1. Оно избыточно.


Ну, так это давно известно любому разработчику. Как и аргументы за него, и против него.
Лично я бы предпочел, чтобы оно было обязательным.
Но мне непонятно, как это связано с темой.

Petro123Зачем?


В языке есть неявное соглашение, что в определенных ситуациях достаточно указать имя метода соответсвующее по названию имеющемуся в интерфейсе, и при этом он будет считаться реализацией этого интерфейса.
Если непонятно, какой метод привязывается, можно указать явно.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722043
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AddxЛично я бы предпочел, чтобы оно было обязательным.оригинально)).
Избыточно, это значит мы можем достигать цели и без данного оператора.
Обязательным для ненужного?
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722048
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Addx,

Сравни введение await и new для метода.
Что Значимее?
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722058
Addx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123AddxЛично я бы предпочел, чтобы оно было обязательным.оригинально)).
Избыточно, это значит мы можем достигать цели и без данного оператора.
Обязательным для ненужного?

Не вижу смысла сейчас развивать тему, не хочу спорить. Я не считаю его ненужным.
Просто пытаюсь уловить суть спора.

Petro123Addx,

Сравни введение await и new для метода.
Что Значимее?

Не понимаю, как можно сравнивать теплое с мягким.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722069
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Addx,
Студия перед тобой?
Скажи внятно зачем тебе new метода.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722072
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AddxНе понимаю, как можно сравнивать теплое с мягким.вот это мягкое нам не нужно)))).
Открой студию, увидешь там лампочку желтую и другие плюшки.
Жизнь и так прекрасна.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722135
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AddxПросто пытаюсь уловить суть спора.

Ответь на вопрос в самом первом сообщении.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722142
Addx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортомОтветь на вопрос в самом первом сообщении.

Да.
И в чем предмет спора?
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722143
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортомОтветь на вопрос в самом первом сообщении.о нет, еще десяток страниц!
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722145
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AddxДа.
И в чем предмет спора?В том, что ТС не согласен с ответом "да"
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722147
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProAddxИ в чем предмет спора?В том, что ТС не согласен с ответом "да"

))))

Вообще-то, не только я.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722150
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортом))))

Вообще-то, не только я.Ох уж эти остроконечники и тупоконечники
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722152
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AddxАгнец за бортомОтветь на вопрос в самом первом сообщении.

Да.
И в чем предмет спора?он многоплановый. Можно не участовать. Тебя вычеркиваем.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722156
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортомShocker.Proпропущено...
В том, что ТС не согласен с ответом "да"

))))

Вообще-то, не только я.да
Трое с половиной и 10 оздержалось. Большинство.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722158
Addx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProВ том, что ТС не согласен с ответом "да"

Ну, бывает, а 7 страниц-то спора о чем?
Кто-то еще согласен с этой позицией? Или что-то еще обсуждается?
Насчет слова "new" я понял, весь спор только о его полезности?
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722160
Addx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортомShocker.Proпропущено...
В том, что ТС не согласен с ответом "да"

))))

Вообще-то, не только я.

А кто еще?
Лучше ссылки, но найду сообщения и по нику, если лень искать.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722162
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Addx,

1. Оно избыточно.

Это не так.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722165
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Addx,
hVostt
Мне его мнения достаточно. У него нюх)))
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722166
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВPetro123Addx,

1. Оно избыточно.

Это не так.к барьеру! Верее к студии!!!
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722175
Addx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Addx,
hVostt
Мне его мнения достаточно. У него нюх)))

Пролистал, не нашел.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722189
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AddxПролистал, не нашел.ни одного поста? Я должен искать прогульщик занятий?
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722197
Addx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123ЕвгенийВпропущено...

Это не так.к барьеру! Верее к студии!!!

Студия - это просто графическая оболочка над компилятором. Можно взять другую. )
Необязательность не показатель ненужности.
Например private в полях классов необязателен. Но вовсю применяется Microsoft'ом.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722199
Addx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123AddxПролистал, не нашел.ни одного поста? Я должен искать прогульщик занятий?

Ни одного поста, непосредственно связанного с ответом на изначальный вопрос. Я об этом, разумеется.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722216
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AddxСтудия - это просто графическая оболочка над компилятором. Можно взять другую. )может тебе погулять?
Тут у всех выше были хоть аргументы.
У тебя hVostt тут ничего не говорил. К студии не пойду т.к. типа отшельник на макинтоше пишешь.
Удачи!
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722219
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AddxАгнец за бортомОтветь на вопрос в самом первом сообщении.

Да.раз да, покажи код реализации в наследнике.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722220
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt, приди и скажи ему правду про оператор new.
Он уже заждался).
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722223
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyAddxпропущено...


Да.раз да, покажи код реализации в наследнике.
Покажи наследника в котором ничего не изменили по сравнению с базовым классом.
Объясни - зачем нужен такой наследник.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722225
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAAntonariyпропущено...
раз да, покажи код реализации в наследнике.
Покажи наследника в котором ничего не изменили по сравнению с базовым классом.
Объясни - зачем нужен такой наследник.твое требование совершенно левое по отношению к стартовому вопросу, и оно идет хорошо тебе известным эротическим маршрутом.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722230
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyskyANAпропущено...

Покажи наследника в котором ничего не изменили по сравнению с базовым классом.
Объясни - зачем нужен такой наследник.твое требование совершенно левое по отношению к стартовому вопросу, и оно идет хорошо тебе известным эротическим маршрутом.
А, то есть в стартовом вопросе речь о бесполезных наследниках. С такими смело сам иди известным эротическим маршрутом.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722236
Addx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyAddxпропущено...


Да.раз да, покажи код реализации в наследнике.

Реализации чего? Какая стоит задача?
Чтобы при преобразовании к интерфейсу мы вызывали переопределенный метод? Или что-то еще?
Мне непонятно, с чего бы вдруг реализация интерфейса перепревязалась в наследнике к постороннему методу.
В .net простой и очевидный механизм. ИМХО, разумеется.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722243
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAAntonariyпропущено...
твое требование совершенно левое по отношению к стартовому вопросу, и оно идет хорошо тебе известным эротическим маршрутом.
А, то есть в стартовом вопросе речь о бесполезных наследниках. С такими смело сам иди известным эротическим маршрутом.Я вижу, что ты тупой, что ты замещаешь дурацкими фантазиями то, что понять не в состоянии, поэтому повторю:

В стартовом посте речь идет о

1) интерфейсе iParentable
2) базовом классе, parentClass реализующем инетерфейс iParentable
3) наследнике subClass базового класса parentClass

Содержимое всех этих сущностей произвольное.

И так же задан вопрос: реализует ли класс subClass интерфейс iParentable .

Если ответ "да", то задача состоит в следующем: показать c#-код реализации интерфейса iParentable в классе subClass с целью подтвердить этот ответ.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722247
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,
)) +1
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722248
Addx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123hVostt, приди и скажи ему правду про оператор new.
Он уже заждался).

Причем тут ключевое слово new?
Ответ может быть только да/нет.
Наследник не может "прекратить реализовывать интерфейс".
Соображение "он реализует его не так, как я считаю правильным, поэтому он его не реализует" звучит как минимум странно.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722252
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Addx,
Ту смешиваешь аж 3 вопроса:
Оператор new, интерфейсы и наследование.
Да еще без кода.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722258
Addx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy
...
Если ответ "да", то задача состоит в следующем: показать c#-код реализации интерфейса iParentable в классе subClass с целью подтвердить этот ответ.

Я вижу непонимание работы .net как такового. Да и ООП в целом.
В наследнике НЕ НУЖНО реализовывать методы, которые УЖЕ были реализованы в предке. Это основы. 2+2=4.
Интерфейсы привязываются к методам в данном конкретном классе, после этого они НИКОГДА не перепривязываются.
Виртуальные методы - отдельная тема, там другой механизм.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722261
Addx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Addx,
Ту смешиваешь аж 3 вопроса:
Оператор new, интерфейсы и наследование.
Да еще без кода.

Я смешиваю?!
Я наоборот, хотел все вопросы по отдельности рассматривать.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722262
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AddxВ наследнике НЕ НУЖНО реализовывать методы, которые УЖЕ были реализованы в предкеда
И остальное тоже верно.
Че тогда спорил?
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722263
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Addxпо отдельности рассматривать.ну дак на операторе застряли.
Он избыточен?
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722270
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Addxпо отдельности рассматривать.ну дак на операторе застряли.
Он избыточен?
Нет, не избыточен. Выше была ссылка на обсуждение посвященное только ему.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722276
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AddxAntonariy...
Если ответ "да", то задача состоит в следующем: показать c#-код реализации интерфейса iParentable в классе subClass с целью подтвердить этот ответ.

Я вижу непонимание работы .net как такового. Да и ООП в целом.
В наследнике НЕ НУЖНО реализовывать методы, которые УЖЕ были реализованы в предке. Это основы. 2+2=4.
Интерфейсы привязываются к методам в данном конкретном классе, после этого они НИКОГДА не перепривязываются.Переводя этот поток сознания на чоткий базар ООП-понятий: subClass не реализует iParentable, он наследует реализацию .

То есть правильный ответ - НЕТ.

Я вижу непонимание смысла терминов ООП. Хер от пальца отличаем, а их названия - путаем.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722277
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВ,

Студию открой
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722290
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123hVostt, приди и скажи ему правду про оператор new.
Он уже заждался).

да чё тут говорить, вообще обсуждение использования перекрытия методов с помощью new является пустой тратой времени, так как это должно быть вне закона :)
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722297
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyskyANAпропущено...

А, то есть в стартовом вопросе речь о бесполезных наследниках. С такими смело сам иди известным эротическим маршрутом.Я вижу, что ты тупой, что ты замещаешь дурацкими фантазиями то, что понять не в состоянии, поэтому повторю:

В стартовом посте речь идет о

1) интерфейсе iParentable
2) базовом классе, parentClass реализующем инетерфейс iParentable
3) наследнике subClass базового класса parentClass

Содержимое всех этих сущностей произвольное.

И так же задан вопрос: реализует ли класс subClass интерфейс iParentable .

Если ответ "да", то задача состоит в следующем: показать c#-код реализации интерфейса iParentable в классе subClass с целью подтвердить этот ответ.
Да нет, тупой ты.

Наследника создают, чтобы изменить или расширить поведение базового класса.
Либо создать конкретную реализацию, когда базовый класс абстрактный.

В любом случае в наследнике будет некая конкретная логика, относящаяся к контракту, определённому интерфейсом.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722298
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttPetro123hVostt, приди и скажи ему правду про оператор new.
Он уже заждался).

да чё тут говорить, вообще обсуждение использования перекрытия методов с помощью new является пустой тратой времени, так как это должно быть вне закона :)Если весь код твой, то да.
А если ты унаследовался от чужого бинарника, в котором после обновления его версии появился одноименный метод, который уже существует в твоем наследнике, то либо терпеть предупреждения компилятора о перекрытии, либо подавить их через new. Либо отрефакторить код, изменив название своего метода, вызывая приступы анальных болей у тех, кто юзает в виде бинарника твой код.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722301
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAAntonariyпропущено...
Я вижу, что ты тупой, что ты замещаешь дурацкими фантазиями то, что понять не в состоянии, поэтому повторю:

В стартовом посте речь идет о

1) интерфейсе iParentable
2) базовом классе, parentClass реализующем инетерфейс iParentable
3) наследнике subClass базового класса parentClass

Содержимое всех этих сущностей произвольное.

И так же задан вопрос: реализует ли класс subClass интерфейс iParentable .

Если ответ "да", то задача состоит в следующем: показать c#-код реализации интерфейса iParentable в классе subClass с целью подтвердить этот ответ.
Да нет, тупой ты.

Наследника создают, чтобы изменить или расширить поведение базового класса.
Либо создать конкретную реализацию, когда базовый класс абстрактный.

В любом случае в наследнике будет некая конкретная логика, относящаяся к контракту, определённому интерфейсом.А я что, отказываю наследнику в этом?

Ты не просто тупой, ты тупой клоун.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722303
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyskyANAпропущено...

Да нет, тупой ты.

Наследника создают, чтобы изменить или расширить поведение базового класса.
Либо создать конкретную реализацию, когда базовый класс абстрактный.

В любом случае в наследнике будет некая конкретная логика, относящаяся к контракту, определённому интерфейсом.А я что, отказываю наследнику в этом?
Не отказываешь, но почему-то не считаешь это реализацией. А если считаешь, то тогда задаёшь тупые вопросы.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722309
Addx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123AddxВ наследнике НЕ НУЖНО реализовывать методы, которые УЖЕ были реализованы в предкеда
И остальное тоже верно.
Че тогда спорил?

авторЕсли ответ "да", то задача состоит в следующем: показать c#-код реализации интерфейса iParentable в классе subClass с целью подтвердить этот ответ.

авторAntonariy,
)) +1
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722311
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAAntonariyпропущено...
А я что, отказываю наследнику в этом?
Не отказываешь, но почему-то не считаешь это реализацией. А если считаешь, то тогда задаёшь тупые вопросы.Вот тебе умный вопрос: до каких пор ты будешь свои сопли по клавиатуре размазывать?

Изначально шла речь о реализации конкретного интерфейса в конкретном классе, имеющего конкретного наследника. И пусть этот наследник хоть 100500 собственных методов имеет - тот конкретный интерфейс в нем не реализован, хоть ты захлебнись своими соплями, он реализован в базовом классе.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722322
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Модератор: skyANA, Antonariy - МСУ мы вроде сегодня не приглашали, поэтому не надо готовиться к его визиту...
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722326
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyИзначально шла речь о реализации конкретного интерфейса в конкретном классе, имеющего конкретного наследника. И пусть этот наследник хоть 100500 собственных методов имеет - тот конкретный интерфейс в нем не реализован, хоть ты захлебнись своими соплями, он реализован в базовом классе.
А покажи реального такого наследника, что используется на практике, а не сферического со 100500 методами, что никак не влияют на реализацию контракта интерфейса.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722329
Addx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyПереводя этот поток сознания на чоткий базар ООП-понятий: subClass не реализует iParentable, он наследует реализацию .
То есть правильный ответ - НЕТ.

Я вижу непонимание смысла терминов ООП. Хер от пальца отличаем, а их названия - путаем.

В ООП нет базаров.
"Реализует" и "я написал" ничего общего между собой не имеют.
subClass реализует интерфейс. Точка.
Мне, как пользователю класса, все равно, где и кто там написал код.
Меня вообще не интересует иерархия наследования.
Меня интересует, реализует ли конкретный класс (subClass) интерфейс или нет.
В этом смысл ООП.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722330
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Addx,
Там в вопросе намешано куча всего.
Когда по коду, то все просто:
1. New лишний. Вместо него надо все методы виртуальными как в жабе
2. Интерфейс сбоку стоит в иерархии и реализуется только там где прописан. Приведение автоматом.
3. При совпадании метода студия предупредит что перекрываем.
Что еще надо?
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722331
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AddxМеня вообще не интересует иерархия наследования.
Меня интересует, реализует ли конкретный класс (subClass) интерфейс или нет.
В этом смысл ООП.

Хорошо сказал!
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722336
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariyон реализован в базовом классе.+1
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722346
Addx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Addx,
Там в вопросе намешано куча всего.
Когда по коду, то все просто:
1. New лишний. Вместо него надо все методы виртуальными как в жабе
2. Интерфейс сбоку стоит в иерархии и реализуется только там где прописан. Приведение автоматом.
3. При совпадании метода студия предупредит что перекрываем.
Что еще надо?

1. Есть virtual и override. Ничего общего с new они не имеют. Абсолютно.
В C# есть виртуальные методы и есть невиртуальные. Невиртуальный метод сделать в наследнике виртуальным нельзя. Так работает .net. Это базовые принципы. Возможно, это может не понравиться, но тут либо смириться, либо не писать на C#.
2. Да. Не всегда.
3. Да.
Я вижу, что Вам не нравится new, но спорить не буду. Лишь поясню свое мнение. Для меня предупреждения студии вообще не аргумент. Если программист Петя проигнорировал предупреждение, то при сборке проекта я ничего не пойму. И на ревью я буду заморачиваться - так надо было, или он затупил?
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722349
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AddxЯ вижу, что Вам не нравится new, но спорить не буду. Лишь поясню свое мнение. Для меня предупреждения студии вообще не аргумент. Если программист Петя проигнорировал предупреждение, то при сборке проекта я ничего не пойму. И на ревью я буду заморачиваться - так надо было, или он затупил?Поэтому должна быть ошибка, а не предупреждение - тут я с Хвостом согласен
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722350
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вроде это можно даже прагмой настроить
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722351
Addx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортомAddxМеня вообще не интересует иерархия наследования.
Меня интересует, реализует ли конкретный класс (subClass) интерфейс или нет.
В этом смысл ООП.

Хорошо сказал!

И да, реализует.
Поскольку внутренняя кухня от меня скрыта, я спокойно им (интерфейсом) пользуюсь.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722352
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Addx,
Дык я мирюсь и пишу). Вернее я Не пишу new. Это разрешено?
А ты сам то пишешь?
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722353
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProВроде это можно даже прагмой настроитьименно. И даже лампочкой волшебной
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722354
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AddxАгнец за бортомпропущено...


Хорошо сказал!

И да, реализует.
Поскольку внутренняя кухня от меня скрыта, я спокойно им (интерфейсом) пользуюсь.

Тогда почему код на скриншоте ведёт себя так, как ведёт?
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722357
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортомТогда почему код на скриншоте ведёт себя так, как ведёт?ты все время пытаешься одновременно выставлять себя и изготовителем этого класса и его потребителем.

Но за функционал класса отвечает изготовитель. Поэтому изготовитель решает - перекрыть метод и явно реализовать интерфейс или перекрыть метод, но дать возможность пользователям интерфейса вызывать базовую релизацию. То есть именно класс отвечает за свой функционал, а никак не потребитель.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722359
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
Я думаю ему давно все понятно.
У него с новеньким терки.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722361
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AddxМеня интересует, реализует ли конкретный класс (subClass) интерфейс или нет.
В этом смысл ООП.
Конкретная реализация наследования в определенном языке программирования, ещё не есть весь смысл ООП
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722363
Addx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортомAddxпропущено...


И да, реализует.
Поскольку внутренняя кухня от меня скрыта, я спокойно им (интерфейсом) пользуюсь.

Тогда почему код на скриншоте ведёт себя так, как ведёт?

Потому что он так и должен себя вести!
Я пишу точные формулировки, а в ответ получаю демагогию.

Ладно.

MSDNIf the interface is inherited because you inherited a base class that implements the interface, the base class provides the implementation of the members of the interface.

Выделил ключевые моменты. Могу перевести или дополнить, если что-то непонятно.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722364
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Proты все время пытаешься

Бррр...

Уважаемый Addx занял недвусмысленную позицию.

Причём тут изготовители?

Есть класс, есть интерфейс, есть код с поведением.

Я солидарен с Antoniary.
Не реализует.
Четкий ответ.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722365
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AddxАгнец за бортомпропущено...


Тогда почему код на скриншоте ведёт себя так, как ведёт?

Потому что он так и должен себя вести!
Я пишу точные формулировки, а в ответ получаю демагогию.

Ладно.

MSDNIf the interface is inherited because you inherited a base class that implements the interface, the base class provides the implementation of the members of the interface.

Выделил ключевые моменты. Могу перевести или дополнить, если что-то непонятно.

Наследует реализацию и реализует - одно и тоже?
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722366
Addx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВAddxМеня интересует, реализует ли конкретный класс (subClass) интерфейс или нет.
В этом смысл ООП.
Конкретная реализация наследования в определенном языке программирования, ещё не есть весь смысл ООП


Сокрытие реализации - базовый принцип.
Как именно реализовано - зависит от языка.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722368
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортомТогда почему код на скриншоте ведёт себя так, как ведёт?
Мда.. IL показывали, метаданные методов показывали - не в коня корм.
Ну ладно, вот дампы MethodsTable (vtable, по сути). Получены с помощью windbg+sos.
а) в случае, когда метод только унаследован (определен только в Bar):
Код: 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.
0:000> !DumpHeap -type Foo
 Address       MT     Size
024d2338 00204e60       12     

Statistics:
      MT    Count    TotalSize Class Name
00204e60        1           12 test2.Foo
Total 1 objects
0:000> !DumpMT -MD 00204e60
EEClass:         002017d4
Module:          00204014
Name:            test2.Foo
mdToken:         02000005
File:            C:\Projects\.Net\_trash\tests\test2\test2\bin\Debug\test2.exe
BaseSize:        0xc
ComponentSize:   0x0
Slots in VTable: 6
Number of IFaces in IFaceMap: 1
--------------------------------------
MethodDesc Table
   Entry MethodDe    JIT Name
6ea5ba80 6e668074 PreJIT System.Object.ToString()
6ea50ab0 6e66807c PreJIT System.Object.Equals(System.Object)
6ea5e910 6e66809c PreJIT System.Object.GetHashCode()
6ea5ba0c 6e6680b0 PreJIT System.Object.Finalize()
00350530 00204de4    JIT test2.Bar.SayWord()
003504c0 00204e58    JIT test2.Foo..ctor()


б) определен в Bar как виртуальный, и переопределен (override) в Foo:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
MethodDesc Table
   Entry MethodDe    JIT Name
6ea5ba80 6e668074 PreJIT System.Object.ToString()
6ea50ab0 6e66807c PreJIT System.Object.Equals(System.Object)
6ea5e910 6e66809c PreJIT System.Object.GetHashCode()
6ea5ba0c 6e6680b0 PreJIT System.Object.Finalize()
00270530 00194e58    JIT test2.Foo.SayWord()
002704c0 00194e60    JIT test2.Foo..ctor()


в) перекрыт (new) в Foo:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
MethodDesc Table
   Entry MethodDe    JIT Name
6ea5ba80 6e668074 PreJIT System.Object.ToString()
6ea50ab0 6e66807c PreJIT System.Object.Equals(System.Object)
6ea5e910 6e66809c PreJIT System.Object.GetHashCode()
6ea5ba0c 6e6680b0 PreJIT System.Object.Finalize()
00350530 00204de4    JIT test2.Bar.SayWord()
003504c0 00204e64    JIT test2.Foo..ctor()
00350080 00204e58   NONE test2.Foo.SayWord()
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722371
Addx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортом
Код: plaintext
Addxпропущено...


Потому что он так и должен себя вести!
Я пишу точные формулировки, а в ответ получаю демагогию.

Ладно.
пропущено...


Выделил ключевые моменты. Могу перевести или дополнить, если что-то непонятно.

Наследует реализацию и реализует - одно и тоже?

interface is inherited - наследует интерфейс. Никакого "наследования реализации".
Но, разумеется, для реализации интерфейса в наследнике нужно унаследовать реализацию из базового класса.
Взять ее просто больше неоткуда. Это прямо сказано в документации, и код ведет себя именно так.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722375
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры Павловны,

Слушай, да мне пофиг на il/метаданные, что ты мне их суешь?

Ты вопроса не понимаешь?
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722378
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Addx
Сокрытие реализации - базовый принцип.

Сокрытие реализации было еще в Turbo Pascal 4.0, в 1987 году.
А никакого ООП там не было.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722380
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортомСон Веры Павловны,

Слушай, да мне пофиг на il/метаданные, что ты мне их суешь?

Ты вопроса не понимаешь?
Я прекрасно понимаю, что кое-кто заблудился в трех соснах (вместо того, чтобы заниматься делом). На все заданные вопросы ответы уже были даны, всё остальное - либо троллинг, либо схоластика.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722381
Addx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры Павловны...
Мда.. IL показывали, метаданные методов показывали - не в коня корм.
...


Ты тут не умничай, ты пальцем покажи. (с) )))
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722382
Addx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВAddxСокрытие реализации - базовый принцип.

Сокрытие реализации было еще в Turbo Pascal 4.0, в 1987 году.
А никакого ООП там не было.

ООП подразумевает сокрытие реализации.
Наоборот - не всегда.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722385
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AddxТы тут не умничай, ты пальцем покажи. (с) )))
Так показано ведь - выделено красным в последнем блоке. При перекрытии метода базового у типа в vtable фактически образуется 2 метода с одинаковой сигнатурой, и для того, чтобы разрулить, какой из них вызывать, используется объявленный тип экземпляра объекта.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722389
Addx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры Павловны,

это понятно и без IL и vtable.
Эти моменты прямо указаны в документации.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722396
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AddxСон Веры Павловны,

это понятно и без IL и vtable.
Эти моменты прямо указаны в документации.
Ну да. Однако некоторые до сих пор этого не могут понять - вот и приходится идти на крайние меры.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722402
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры ПавловныОднако некоторые до сих пор этого не могут понять - вот и приходится идти на крайние меры.

Зачем? Тебя настолько где-то там унижают, что приходится тащить всё сюда?
Почему тебе "приходится"?
Я к стенке тебя не припираю.
Не нравится - иди мимо.

По IL-коду - почему ветер дует? Потому что деревья гнутся.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722405
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Addx,

Тогда скажи вот что.

Если

class subclass : baseClass - релизует интерфейс iParentable - и это однозначно, то как трактовать такую запись:

class subclass : baseClass, iParentable - в твоих же терминах.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722409
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортомЗачем? Тебя настолько где-то там унижают, что приходится тащить всё сюда?
Почему тебе "приходится"?
Я к стенке тебя не припираю.
Не нравится - иди мимо.
О. В ход пошла тяжелая артиллерия - переход на личности. Нас ждет море конструктива.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722410
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры Павловныпереход на личности.

Да больно надо. Просто неловко видеть всю твою боль и завуалированные подъёбочки.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722414
Addx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортомAddx,

Тогда скажи вот что.

Если

class subclass : baseClass - релизует интерфейс iParentable - и это однозначно, то как трактовать такую запись:

class subclass : baseClass, iParentable - в твоих же терминах.

subclass реализует интерфейс iParentable , как же еще. Хоть в каждом промежуточном классе объяви, ничего не поменяется.

Если Вас интересуют детали реализации, то:

MSDNclass can provide an implementation of an interface only one time and only if the class declares the interface as part of the definition of the class (class ClassName : InterfaceName). If the interface is inherited because you inherited a base class that implements the interface, the base class provides the implementation of the members of the interface.

никаких разночтений тут быть не может.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722415
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортомДа больно надо. Просто неловко видеть всю твою боль и завуалированные подъёбочки.
Так Вы про это хотите поговорить? Или про интерфейсы и оператор new?
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722418
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортомclass subclass : baseClass, iParentable - в твоих же терминах.интерфейс дважды?
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722419
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортом,
Не ругайтесь.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722422
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AddxХоть в каждом промежуточном классе объяви,не люблю бардак
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722427
Addx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123AddxХоть в каждом промежуточном классе объяви,не люблю бардак

В сложных случаях я предпочитаю явную реализацию. Не будет вопросов почему оно именно так работает.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722435
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Addxsubclass реализует интерфейс iParentable , как же еще.

Окей. Так вот - лично мне не нравится эта неоднозначность.

С точки зрения ООП и языка.

Код, что я привёл на скрине.

С использованием new - я получаю не желаемое поведение.
(subclass реализует интерфейс iParentable , как же еще)


С использованием virtual/override - желаемое.
(subclass реализует интерфейс iParentable , как же еще)


С использованием subclass : baseClass , iParentable - желаемое .
(subclass реализует интерфейс iParentable , как же еще)


Тогда как называется это всё время одинаково , и смысл кода - НЕ меняется (с моей точки зрения), а поведение - разное.

Как в анекдоте - "понять это невозможно, это надо запомнить".

С точки зрения ООП (не IL-кода или еще каких кишок) мне лично кажется непонятным:

Почему в JAVA я могу, при использовании DI:

1. Унаследоваться от класса.
2. Переопределить интересующий меня метод.
3. Воткнуть его в конфигурацию DI-контейнера.

И всё будет ок, а если разраб ПРЯМО ПРОТИВ изменения своего бриллиантового класса, то я получу ошибку компиляции .

А в шарпе я сделаю РОВНО тоже самое, мне компилятор скажет про new keyword, всё скомпилится - но в рантайме - всё пойдёт по звезде.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722437
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Агнец за бортомclass subclass : baseClass, iParentable - в твоих же терминах.интерфейс дважды?

Да.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722438
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортомPetro123пропущено...
интерфейс дважды?

Да.в коде пробовал?
1. Я смысла не вижу.
2. Интерфейс становится не публичным.
Нет под рукой студии. Завтра.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722439
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123в коде пробовал?
Пробовал.

Petro1231. Я смысла не вижу.
Просто эксперимент.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722440
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AddxВ сложных случаяхОК.
В сложных я срываю стоп кран и еду на ободах до шиномонтажа.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722441
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортомПросто эксперимент.))) молодца))
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722444
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортом,

Только про DI не надо. Издеваешься?
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722445
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Агнец за бортом,

Только про DI не надо. Издеваешься?

А в чём проблема?
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722447
Addx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123ОК.
В сложных я срываю стоп кран и еду на ободах до шиномонтажа.

Тяжелая у Вас работа. У нас разработчикам такого делать не приходится.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722448
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортом,
Инжекцию мы не обсуждали. И дело не в ней.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722449
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AddxPetro123ОК.
В сложных я срываю стоп кран и еду на ободах до шиномонтажа.

Тяжелая у Вас работа. У нас разработчикам такого делать не приходится.new тоже самое
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722450
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Агнец за бортом,
Инжекцию мы не обсуждали. И дело не в ней.

Какая разница? Этот паттерн ближе всего.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722451
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортомPetro123Агнец за бортом,
Инжекцию мы не обсуждали. И дело не в ней.

Какая разница? Этот паттерн ближе всего.ближе всего у меня топор. Но я тяну руку дальше к миске для кошки чтобы ее покормить.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722452
Addx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортом...

Окей. Так вот - лично мне не нравится ...

.

Вот с этого и нужно было начинать. А не с безосновательных утверждений.
Тогда бы спокойно обсудили, что и почему Вам не нравится.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722453
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AddxВот с этого и нужно было начинать.

Так как бы об этом всю ветку и речь.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722455
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А тот момент, что любое обсуждение уходит в срач в полемическом задоре - сами видите, публика-с...
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722459
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортом,
Весь вопрос ветки в том что нужны default virtual методы.
Остальное от java не отличается.
Я бы не против.....
и обсуждать тут больше нечего.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722493
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AddxМеня интересует, реализует ли конкретный класс (subClass) интерфейс или нет.
В этом смысл ООП.То есть понимать разницу между "реализует" и "наследует реализацию" ты отказываешься.

AddxМне, как пользователю классаВерно, ты не программист, ты пользователь.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722504
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAAntonariyИзначально шла речь о реализации конкретного интерфейса в конкретном классе, имеющего конкретного наследника. И пусть этот наследник хоть 100500 собственных методов имеет - тот конкретный интерфейс в нем не реализован, хоть ты захлебнись своими соплями, он реализован в базовом классе.
А покажи реального такого наследника, что используется на практике, а не сферического со 100500 методами, что никак не влияют на реализацию контракта интерфейса.покажи хотя бы пару слов, объединенным общим смыслом.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722555
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyЕсли весь код твой, то да.
А если ты унаследовался от чужого бинарника, в котором после обновления его версии появился одноименный метод, который уже существует в твоем наследнике, то либо терпеть предупреждения компилятора о перекрытии, либо подавить их через new. Либо отрефакторить код, изменив название своего метода, вызывая приступы анальных болей у тех, кто юзает в виде бинарника твой код.

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

А перекрытие метода через new никуда передать нельзя, чужому бинарнику какбы нас...ть на твоё перекрытие. Соответственно, ты можешь выбрать любое другое имя для нового метода, чё ты прицепился к переопределению? На кой хрен? Что тебе это даст?
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722556
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttСоответственно, ты можешь выбрать любое другое имя для нового метода, чё ты прицепился к переопределению?

*к перекрытию
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722560
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,

Вот давай посмотрим, есть такой класс Stream , он используется внутри фреймворка и во многих библиотеках.

И вот, тебе захотелось переопределить метод CopyTo , который ни разу не виртуальный.

Ты такой делаешь свою реализацию new CopyTo(...), и что получаешь? Ничего. Передашь инстанс своего класса-наследника с перекрытием, и никто не вызовет твой метод.

Так почему бы не добавить свой метод MySuperCopyTo и не ипать никому мозг? Просто не понимаю.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722586
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123в коде пробовал?
1. Я смысла не вижу.
2. Интерфейс становится не публичным.
Нет под рукой студии. Завтра.
Выше уже говорилось, что применение EIMI требует отдельных обоснований. Поскольку у него куча своих нюансов.
Допустим, нужно протянуть цепочку наследования EIMI-метода в унаследованный класс:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
class Foo: Bar, ISpeak
{
  // Error CS0106  The modifier 'virtual' is not valid for this item
  virtual void ISpeak.SayWord()
  {
    Console.WriteLine("Foo.ISpeak.SayWord");
  }
}


- не выйдет (как и public virtual ISpeak...). Ок, в наследнике тоже сделаем EIMI, но с одной оговоркой - в нем надо сначала вызвать EIMI-метод базового класса (стандартная, в общем, штука при реализации переопределенных virtual-методов). Обычный вызов base.SayWord вызовет реализацию SayWord в Bar, а вот такое
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
class Zot : Foo, ISpeak
{
  void ISpeak.SayWord()
  {
    // Error CS0175  Use of keyword 'base' is not valid in this context
    ((ISpeak)base).SayWord();
  }
}


тоже не прокатит.
Наконец, при необходимости обратиться к EIMI-методу внутри класса, в котором он объявлен, придется постоянно кастовать this к соотв. интерфейсу. А если имеет место быть одновременное наследование интерфейса, и EIMI методов того же интерфейса, то стоит один раз забыть привести тип this - и долгое вылавливание багов и неочевидного поведения гарантировано. Это не говоря о том, что, как и в случае с перекрытием метода, результат вызова метода, одноименного с EIMI, будет зависить от объявленного типа экземпляра, на котором делается вызов.

Агнец за бортомКак в анекдоте - "понять это невозможно, это надо запомнить".
Некоторым людям, имеющим желание разобраться в вопросе, помогает чтение документации.
Агнец за бортомПочему в JAVA я могу
Потому что ява - другой язык. Ваш К.О. Если интересует, почему разработчики C# решили сделать иначе - пишите в Редмонд.
Агнец за бортомА в шарпе я сделаю РОВНО тоже самое, мне компилятор скажет про new keyword, всё скомпилится - но в рантайме - всё пойдёт по звезде.
Потому что перекрытие не равно переопределению. Потому что если делается перекрытие, нужно представлять себе, чем это чревато. Потому что если делаешь что-то, и не понимаешь, что делаешь, то ССЗБ.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722587
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры Павловны,
Насколько вас понял, а вы все таки профи, в данном топике не следует уповать на: "в каждом наследнике продублирую интерфейс".
ТС сказал что это у него эксперимент)). Ну и пусть забавляется. Я так не делаю и не пишу. В дельфях насколько знаю, нет такого.
Имхо
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722590
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортоммне компилятор скажет про new keyword, всё скомпилится - но в рантайме - всё пойдёт по звезде.ну дак ты среагировал по другому.
У меня сразу появились претензии к оператору , а у тебя почему то глобальные претензии на 11 страниц.
Не трать энергию понапрасну)
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722592
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортом,
Ты кстати хотел хакнуть класс без виртуального метода.
В курсе почему намедни ракета упала?
При сборке боковая ступень не входила в замок-шип.
И тогда сборщик загнал её силой. Молотком или чем ещё)).
Дак вот когда ты в наследнике написал метод и имя совпало, студия тебя предупредила про конфликт.
Но ты взял кувалду new и вогнал таки метод на место)).
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722602
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyskyANAпропущено...

А покажи реального такого наследника, что используется на практике, а не сферического со 100500 методами, что никак не влияют на реализацию контракта интерфейса.покажи хотя бы пару слов, объединенным общим смыслом.
Слив засчитан.

Вот тебе пара слов, объединенных общим смыслом. Улавливаешь?
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722612
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123а у тебя почему то глобальные претензии на 11 страниц.

Я все свои выводы сделал на 4-ой странице.

2 Сон Веры Павловны

Слушай, зачем ты повторяешь одно и то же из страницы в страницу? Знаешь, чего это признак?

Я веду речь о другом.

Тот факт, что класс реализует интерфейс и непосредственно реализует этот интерфейсах в своих методах - не даёт однозначной гарантии, что будучи приведённым к типу интерфейса - будут вызваны именно его методы.

Вот имея на входе только эту информацию - нельзя сделать однозначный вывод об использовании.
Мне это кажется неоднозначным и неудобным.

ВСЁ.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722615
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MSDNclass can provide an implementation of an interface only one time and only if the class declares the interface as part of the definition of the class (class ClassName : InterfaceName). If the interface is inherited because you inherited a base class that implements the interface, the base class provides the implementation of the members of the interface.

Формально вы правы. Но лишь формально. Это всё равно что вываливать сюда простыни IL-кода, и апеллировать к ним.

Мне интересно, почему вы не включили в цитату следующую прямо за ней фразу

MSDNHowever, the derived class can reimplement the interface members instead of using the inherited implementation.


Формально да - реализует.
Фактически - встаёт вопрос - как реализует.
Наследуя реализацию от базового или ре-имплементируя интерфейс у себя.

Самое простое - отказаться от new в принципе, и больше не забивать себе голову.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722626
Addx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyAddxМне, как пользователю классаВерно, ты не программист, ты пользователь.
[/quot]

Увы, все наоборот.
Программист при словах "пользователь класса" и "клиент" представляет вовсе не бабушку за клавиатурой или скучающего дядю в кафешке.
Разумеется, смысл моих постов при этом от Вас ускользает. Жаль.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722798
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортомСамое простое - отказаться от new в принципе, и больше не забивать себе голову.

Ну слава те хоспади

А я о чём? Объявить переопределение вне закона. Максимум где это может потребоваться, в какой-нибудь ущербной кодогенерации.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722799
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttОбъявить переопределение

**ть

перекрытие, хотел сказать
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722803
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это новое воплощение cdtyjv, т.е. свеном'а?
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722845
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
buser,

Свято место пусто не бывает))
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722931
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAAntonariyпропущено...
покажи хотя бы пару слов, объединенным общим смыслом.
Слив засчитан.

Вот тебе пара слов, объединенных общим смыслом. Улавливаешь?Ага, свой потолок смысла ты продемонстрировал.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722935
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt Соответственно, ты можешь выбрать любое другое имя для нового метода, чё ты прицепился к переопределению? На кой хрен? Что тебе это даст?Блин, не теряй хронологию событий. Еще раз:

2010 год) Ты взял какой-то бинарник xxx, унаследовался от его класса yyy, добавил метод zzz, создал свой бинарник и распространил по миру.
2011 год) Твой бинарник распространился, метод zzz дергают все, кому не лень
2012 год) Бинарник xxx обновился, в классе yyy появился собственный метод zzz, в результате в твоем проекте в классе, который унаследовал zzz, появилось перекрытие, компилятор ругается.
2013 год) твои действия?
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722946
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,
Это собственно и все, что нужно знать, почему есть модификатор new.
Хотя еще один вариант, который вижу, если в базовом классе член помечен атрибутом и это нужно отменить в классе наследнике. Но это побочный эффект от первого.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722949
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy2010 год) Ты взял какой-то бинарник xxx, унаследовался от его класса yyy, добавил метод zzz, создал свой бинарник и распространил по миру.
2011 год) Твой бинарник распространился, метод zzz дергают все, кому не лень
2012 год) Бинарник xxx обновился, в классе yyy появился собственный метод zzz, в результате в твоем проекте в классе, который унаследовал zzz, появилось перекрытие, компилятор ругается.
2013 год) твои действия?

сделаю вместо своего унаследованного класса декоратор, если уж на то пошло
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722953
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВAntonariy,
Это собственно и все, что нужно знать, почему есть модификатор new.Да. И именно этот кейс описан в МСДН, только почему-то доходит он до аудитории со скрипом.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722963
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttсделаю вместо своего унаследованного класса декоратор, если уж на то пошлоТак в 2012 году пол-мира твой класс заюзало, предлагаешь всем тонны g-кода рефакторить?
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722965
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пардон, в 2011м
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722982
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyhVosttсделаю вместо своего унаследованного класса декоратор, если уж на то пошлоТак в 2012 году пол-мира твой класс заюзало, предлагаешь всем тонны g-кода рефакторить?

А смотря как они используют "мой" класс. Если они используют мою реализацию, но передают по ссылке на базовый класс, то твоё перекрытие не поможет. А так, если это просто какой-то метод и никакое ООП не используется, тогда декоратор.

Пол мира скачает новую версию моей либы и всё у них будет работать, так как наименование и сигнатура класса останется, только он уж не будет переопределять чужой класс, а внутри его переиспользовать как мне надо.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39722993
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,
Не вижу версионирования в ваших играх на пол мира.
Версия 3.4.567.4 уже не работает?
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39723013
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttЕсли они используют мою реализацию, но передают по ссылке на базовый класс, то твоё перекрытие не поможет.
Хвост, ты не чувствуешь всю глубину момента!
Если они используют свой метод, который есть только в наследнике, то его нет в базовом классе и по ссылке на базовый класс его вызвать нельзя, компилятор не даст.
Вот такая картина маслом!
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39723015
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВХвост, ты не чувствуешь всю глубину момента!
Если они используют свой метод, который есть только в наследнике, то его нет в базовом классе и по ссылке на базовый класс его вызвать нельзя, компилятор не даст.
Вот такая картина маслом!

Ну дык я о чём и говорю. Перекрытие не окажет влияние при передаче по ссылке на базовый класс.
А по сути классы так и используются, эт ж ООП.
То на что ВИПРОС морщит нос ))
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39723165
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttПол мира скачает новую версию моей либы и всё у них будет работать, так как наименование и сигнатура класса останется, только он уж не будет переопределять чужой класс, а внутри его переиспользовать как мне надо.ЯННП с этими переопределениями и переиспользованиями. Вот пример:

Код: 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.
//чужой бинарник
    public class BaseBinary
    {
        public void OldMethod() { }
        public void NewMethod() { } //2012
    }

//твой код и бинарник
    public class YouBinary : BaseBinary 
    {
        public void NewMethod() { } //2011
        public void YourMethod() { }
    }

//чужой код
    public class FinalBinary : YouBinary
    {
        public void DoSomething(){ }
    }

    class Program
    {
        static void Main(string[] args)
        {
            var fb = new FinalBinary();
            fb.OldMethod();
            fb.YourMethod();
            fb.NewMethod();
            fb.DoSomething();
        }
    }

Как ты без new избавишься от предупреждения о перекрытии, чтобы чужой код не пришлось менять? В упор не вижу, куда тут декоратор можно воткнуть.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39723169
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Локализаторам студии стали больше денег платить :))
В 2012й (в которой сейчас писал) предупреждение звучит "используйте новое ключевое слово" вместо "используйте ключевое слово new".
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39723207
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мальчики и девочки, соблюдайте принципы объектно-ориентированного проектирования!
Они как раз про то, чтобы не было больно, когда вдруг что-то меняется.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39723219
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyЛокализаторам студии стали больше денег платить :))
В 2012й (в которой сейчас писал) предупреждение звучит "используйте новое ключевое слово" вместо "используйте ключевое слово new".

Немедленно вспоминается, как в одной старой игрушке студия Фаргус перевела названия переменных в скриптах на русский, в итоге что-то ключевое переставало работать :)
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39723223
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyКак ты без new избавишься от предупреждения о перекрытии,выше было - #pragma
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39723230
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сразу в настройках проекта указать Suppress warnings: 108, и вся недолга.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39723343
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyКак ты без new избавишься от предупреждения о перекрытии, чтобы чужой код не пришлось менять? В упор не вижу, куда тут декоратор можно воткнуть.

У тебя проблема здесь:

Antonariy
Код: c#
1.
2.
3.
4.
5.
var fb = new FinalBinary();
            fb.OldMethod();
            fb.YourMethod();
            fb.NewMethod();
            fb.DoSomething();



Давай ты поменяешь var на BaseBinary?
И посмотрим, что у тебя получится в итоге.
Потому что именно так оно обычно используется.

А если тебе нужно просто какой-то метод вызвать и пофигу в каком он классе, создай отдельный класс. Зачем пихать в текущий?

Декоратор нужен, когда у тебя два разных интерфейса.

А метод с другой семантикой, но одним и тем же именем -- это намёк.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39723385
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,
Вот пример по версионности сегодня встретил:
авторИзменения в версии 4.0
Из-за подавляющей боли , устраняющей ошибку № 205 - Внедряя стратегию версии сборки , мы реорганизовали библиотеки в одну библиотеку System.Reactive. Чтобы предотвратить нарушение существующего кода, который ссылается на библиотеки v3, у нас есть фасады с TypeForwarders для новой сборки. Если у вас есть ссылка на двоичный файл, созданный против v3.0, используйте новый System.Reactive.Compatibilityпакет.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39723388
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Обратная совместимость - миф )
Помнится, попытался запустить прогу, написанную под Access 2.0 в Access 95 (это следующая версия, если кто не в курсе) - хрена с два она заработала - вывалилась гора ошибок.
С тех пор у меня пропала вера в совместимость, и я очень не люблю обновлять любые библиотеки, а когда вынужден - заранее выделяю на это много времени и тщательно готовлю откат.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39723401
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProОбратная совместимость - миф )без сомнения.
И даже MS сам ее постоянно ломает.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39723404
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
Давай ты поменяешь var на BaseBinary?
И посмотрим, что у тебя получится в итоге.
Потому что именно так оно обычно используется.

До вас не достучаться.
А уважаемый Хвост возможно знает иные способы вызова методов, акромя как через ссылку на класс?
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39723409
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВ,
Он про автоприведение типов.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39723414
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProОбратная совместимость - миф )
Помнится, попытался запустить прогу, написанную под Access 2.0 в Access 95 (это следующая версия, если кто не в курсе) - хрена с два она заработала - вывалилась гора ошибок.
С тех пор у меня пропала вера в совместимость, и я очень не люблю обновлять любые библиотеки, а когда вынужден - заранее выделяю на это много времени и тщательно готовлю откат.
Вроде не для кого уже не секрет, что если изменилась мажорная версия, то смотри, а нет-ли каких-либо breaking changes.
Если минорная версия меняется, то ничего падать не должно.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39723427
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Внешняя библиотека 2017
Код: c#
1.
2.
 public class Base//2017
    { }


Мой код
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
  public class First:Base
    {
        public void M1() { }
        void Test()
        {
            M1();
        }
    }


Обновление внешней библиотеки, 2019 год
Код: c#
1.
2.
3.
4.
 public class Base//2019
    {
        protected void M1() { }
    }



void Test()
{
M1();//что должен сделать компилятор при обновлении библиотеки?
}
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39723442
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttAntonariyКак ты без new избавишься от предупреждения о перекрытии, чтобы чужой код не пришлось менять? В упор не вижу, куда тут декоратор можно воткнуть.

У тебя проблема здесь:

Antonariy
Код: c#
1.
2.
3.
4.
5.
var fb = new FinalBinary();
            fb.OldMethod();
            fb.YourMethod();
            fb.NewMethod();
            fb.DoSomething();


Давай ты поменяешь var на BaseBinary? А я тут при чем? Это не у меня проблема, а у твоей клиентуры, которая заюзала твой бинарник таким вот способом. Это уже готовые программные продукты при всех их архитектурных недостатках. И это не фантастика, ты сам прекрасно осознаешь, как слабо местный контингент ориентируется в паттернах на твоем фоне.

Это - условие задачи, не перекраивай его под свое видение идеальной вселенной.

Перекраивать ты можешь только "свой" код, и все способы кройки и шитья твоего кода сводятся в две группы: в одной процитированный говнокод перестает работать и требует рефакторинга, в другой продолжает работать, как будто ничего не случилось.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39723445
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВчто должен сделать компилятор при обновлении библиотеки? а new чем тут поможет?
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39723448
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВ,
Оператор new не перекрывает метод. Перекрывает одинаковое имя метода.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39723465
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123ЕвгенийВчто должен сделать компилятор при обновлении библиотеки? а new чем тут поможет?
Компилятор подставит new самостоятельно и выкинет предупреждение. Это позволит коду по прежнему продолжать работать.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39723469
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВКомпилятор подставит new самостоятельноэто как? Поправит мой код? Серьезно?
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39723471
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВ,

Блин, я у студии а ты когда?
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39723479
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123ЕвгенийВКомпилятор подставит new самостоятельноэто как? Поправит мой код? Серьезно?
Вот именно, поправит код.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39723482
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВВот именно, поправит код.как протестировать.
Я поражен что он без согласия правит код.
Буду проверять.
При открытии проекта?
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39723520
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123ЕвгенийВВот именно, поправит код.как протестировать.
Я поражен что он без согласия правит код.
Буду проверять.
При открытии проекта?

Да блин, компилятор . Не в исходниках же.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39723522
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотя, у меня студья правила код. Пряма в сырцах, *ука.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39723530
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортом,
Дык код правится или нет без ответа Да программиста?
)))))))))) LOL
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39723531
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортомХотя, у меня студья правила код. Пряма в сырцах, *ука.у тебя студия отшельника)
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39723540
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Агнец за бортом,
Дык код правится или нет без ответа Да программиста?
)))))))))) LOL

И да и нет. В лучших традициях.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39723548
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортом,
Врете вы все. Компилятор не правит код сам.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39723622
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВДо вас не достучаться.
А уважаемый Хвост возможно знает иные способы вызова методов, акромя как через ссылку на класс?

Я же привёл в этой ветке пример с классом Stream.
Почитай плз и задай ещё раз вопрос.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39723625
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВvoid Test()
{
M1();//что должен сделать компилятор при обновлении библиотеки?
}

Сказать, что ты не прав.

Что делать, если ты вдруг решил заменить фундамент дома?

Т.е. C# тебе позволяет использовать перекрытие с помощью new.

Только вот нафига? Т.е. это ничего не решает, ничего не даёт хорошего, но приводит к большим проблемам в перспективе.

Задача: должно скомпилироваться, это знаешь, задача мягко говоря так себе.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39723627
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyПерекраивать ты можешь только "свой" код, и все способы кройки и шитья твоего кода сводятся в две группы: в одной процитированный говнокод перестает работать и требует рефакторинга, в другой продолжает работать, как будто ничего не случилось.

Ну обычно это решается адаптерами и декораторами.
Это известные способы решения проблем совместимости с чужими библиотеками и их изменениями.

Перекрытие new -- это НЕ решение. Это даже не ad hoc, это п&(_#@ц. Вот что это.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39723628
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВЭто позволит коду по прежнему продолжать работать.

Вопрос, правильно ли?

ХЗ.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39723657
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttЕвгенийВДо вас не достучаться.
А уважаемый Хвост возможно знает иные способы вызова методов, акромя как через ссылку на класс?

Я же привёл в этой ветке пример с классом Stream.
Почитай плз и задай ещё раз вопрос.
Дай ссылку.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39723661
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttЕвгенийВЭто позволит коду по прежнему продолжать работать.

Вопрос, правильно ли?

ХЗ.
Дизайнеры языка решили, что это меньшее из зол. С этим надо жить.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39723666
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
Ну обычно это решается адаптерами и декораторами.
Это известные способы решения проблем совместимости с чужими библиотеками и их изменениями.

Т. е. у тебя есть такая "маленькая" библиотечка, в которой как минимум на каждый класс и структуру из стандартной библиотеки .NET по декоратору и адаптору?
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39723691
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВТ. е. у тебя есть такая "маленькая" библиотечка, в которой как минимум на каждый класс и структуру из стандартной библиотеки .NET по декоратору и адаптору?А ты обычно занимаешься наследованием всех классов NET?
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39723695
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProЕвгенийВТ. е. у тебя есть такая "маленькая" библиотечка, в которой как минимум на каждый класс и структуру из стандартной библиотеки .NET по декоратору и адаптору?А ты обычно занимаешься наследованием всех классов NET?
Если это необходимо.
Если писать провайдер для entity framework core или писать кастомную реализацию asp net identity core, то там наследования - мама не горюй.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39723704
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВв которой как минимум на каждый класс и структуру из стандартной библиотекиЕвгенийВЕсли это необходимо.Так ты определись, на каждый или нет )
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39723727
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВДизайнеры языка решили, что это меньшее из зол. С этим надо жить.

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

Но это не означает, что надо использовать всё, что предоставляет язык, в том числе откровенно плохие, не эффективные и вредные решения.

Перекрытие метода -- одно из таких решений.
И лично я видел только одно сомнительно оправданное применение -- кодогенерация.

То, о чём идёт тред, не оправдано.
Какие-то чужие либы, основанные на них мои либы, которые тоже для кого-то чужие.
Это какой-то ппц, придумать можно любую ситуацию вплоть до того:

а что ты будешь делать, если завтра пойдёт дождь из кирпичей, а у тебя кончилось молоко, а???
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39723728
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВhVosttНу обычно это решается адаптерами и декораторами.
Это известные способы решения проблем совместимости с чужими библиотеками и их изменениями.

Т. е. у тебя есть такая "маленькая" библиотечка, в которой как минимум на каждый класс и структуру из стандартной библиотеки .NET по декоратору и адаптору?

Зачем? Есть определённые ситуации, когда это нужно. Описаны в литературе, опытный разработчик в состоянии понять когда и что используется.

Также опытный разработчик не допускает таких тупых ситуаций. А кода они всё-таки возникают, то рефакторит. Разработка это живой процесс, а не забетонированный. Не надо рассказывать про какую-то чужую библиотеку, которая закрыта за семью печатями, а на неё завязано +100500 реализаций.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39723730
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВhVosttпропущено...


Я же привёл в этой ветке пример с классом Stream.
Почитай плз и задай ещё раз вопрос.
Дай ссылку.

21714398
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39723745
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttа что ты будешь делать, если завтра пойдёт дождь из кирпичей, а у тебя кончилось молоко, а???+1
Кто не понял этот топик предлагаю придумать новый отмаз для new.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39723761
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Меня все время занимает вопрос. А зачем нужны такие сложные наследования?
Хотелось бы увидеть пример на реальных проблемах.
Наверное у меня настолько сложных задач не возникает или я их решаю более простыми средствами.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39723762
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2такие сложные наследования

Какие?
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39723764
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Агнец за бортомCat2такие сложные наследования

Какие?
Зачем нужен интерфейс для базового класса?
Все его фичи можно и в базовом классе описать.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39723767
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2Агнец за бортомпропущено...


Какие?
Зачем нужен интерфейс для базового класса?
Все его фичи можно и в базовом классе описать.

Интерфейс - это обещание реализации.
Зачастую, вариантов этих реализаций - несколько.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39723769
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Агнец за бортомCat2пропущено...

Зачем нужен интерфейс для базового класса?
Все его фичи можно и в базовом классе описать.

Интерфейс - это обещание реализации.
Зачастую, вариантов этих реализаций - несколько.
В базовом классе несколько вариантов реализации?
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39723780
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2Зачем нужен интерфейс для базового класса?
А, ну я не знаю. У меня нет "базового" класса.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39724411
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2Агнец за бортомпропущено...


Какие?
Зачем нужен интерфейс для базового класса?
Все его фичи можно и в базовом классе описать.
Например для ко/контр-вариантности.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39724415
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttЕвгенийВпропущено...

Дай ссылку.

21714398
Это не совсем то, вернее совсем не то.
hVosttТак почему бы не добавить свой метод MySuperCopyTo и не ипать никому мозг? Просто не понимаю.
А если после того, как ты добавишь MySuperCopyTo, метод с таким именем появится в .NET Framework 100500 версии?
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39724439
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВкак ты добавишь MySuperCopyTo, метод с таким именем появится в .NET Framework 100500 версии?а нужен? Это же твой метод для твоего наследника.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39724477
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВА если после того, как ты добавишь MySuperCopyTo, метод с таким именем появится в .NET Framework 100500 версии?

И что? То, что ты его перекроешь своей реализацией означает, что через ссылку на базовый класс вызовут чужой метод, а прямые ссылки на твой класс твою, даже если ожидали чужую.

Т.е. это примерно как прикрыть какашку газеткой. Решение -- огонь.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39724495
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
И что? То, что ты его перекроешь своей реализацией означает, что через ссылку на базовый класс вызовут чужой метод, а прямые ссылки на твой класс твою, даже если ожидали чужую.

Через ссылку на базовый класс я не смогу вызвать свой метод, который есть только в моем наследнике!
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39724500
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВЧерез ссылку на базовый класс я не смогу вызвать свой метод, который есть только в моем наследнике!полиморфизма тут нам еще не хватало.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39724556
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВhVosttИ что? То, что ты его перекроешь своей реализацией означает, что через ссылку на базовый класс вызовут чужой метод, а прямые ссылки на твой класс твою, даже если ожидали чужую.

Через ссылку на базовый класс я не смогу вызвать свой метод, который есть только в моем наследнике!

Именно. Вообще, появление метода с такой же сигнатурой, как в твоём наследнике сигнализирует о том, что тебе придётся зарефакторить, так как путей выстрелить в ногу становится овер дофига.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39724689
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
ЕвгенийВCat2пропущено...

Зачем нужен интерфейс для базового класса?
Все его фичи можно и в базовом классе описать.
Например для ко/контр-вариантности.
Примерчик можно?
На классе "Животное", который мы все знаем
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39724755
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39729649
Фотография SIMPLicity_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А можно унаследовать только часть членов класса?

"При определении класса для наследования от другого класса производный класс явно получает все члены базового класса за исключением конструкторов и методов завершения. "

Суть: не могу сериализовать частично записи с помощью JsonConvert.SerializeObject() .
....а переделывать классы кажется неправильным.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39729662
Фотография SIMPLicity_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SIMPLicity_ А можно унаследовать только часть членов класса?

"При определении класса для наследования от другого класса производный класс явно получает все члены базового класса за исключением конструкторов и методов завершения. "

Суть: не могу сериализовать частично записи с помощью JsonConvert.SerializeObject() .
....а переделывать классы кажется неправильным.

Решил по другому ( поменял int на Nullable<int>, все ненужные сделал null и указал сериализатору игнорировать null-поля : NullValueHandling = NullValueHandling.Ignore ).

Но вопрос с наследованием остался
.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39729704
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SIMPLicity_,
Тему зачем подымать? Твой вопрос по сериализатору.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39730101
Фотография SIMPLicity_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123SIMPLicity_,
Тему зачем подымать? Твой вопрос по сериализатору.
Не. Изначально - по наследованию. Сериализация - частный вопрос (так сказать,- "морда проблемы" или "вершина айсберга"), в данной ситуации решение было костылём (компромиссным и удачным, но всё равно - костылём) . Поэтому вопрос именно в теме по наследованию и интерфейсам...
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39730107
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SIMPLicity_,
Значит сформулируй вопрос по новой без сериализации.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39867488
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таки для чего нужен new :)

Боевой пример:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
        private class CompanyFieldsEx : CompanyFields
        {
            public new string ogrn
            {
                get => $"'{base.ogrn}";
                set => base.ogrn = value;
            }
            public new string okpo
            {
                get => $"'{base.okpo}";
                set => base.okpo = value;
            }
            public new string inn
            {
                get => $"'{base.inn}";
                set => base.inn = value;
            }
        }

Суть в том, что берется IEnumerable<T> (в данном случае CompanyFields), превращается в object[,] и отдается в эксель. А что происходит в экселе? Правильно, эксель воспринимает эти коды как числа, и ладно бы просто воспринимал, так числа больше 10 12 (ОГРН) он выводит в экспоненциальном виде, но апостроф перед числом принудительно форматирует его как текст.

Таким образом, подмена полей в наследнике это наиболее дешевый способ лечения данного косяка.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39867511
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyТаки для чего нужен new :)"new" на данное поведение никак не влияет, можешь убрать и проверить ))
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39867519
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyТаким образом, подмена полей в наследнике это наиболее дешевый способ лечения данного косяка.

Дешёвый это задать тип ячейки, а это адский костыль в кубе :)
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39867525
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProAntonariyТаки для чего нужен new :)"new" на данное поведение никак не влияет, можешь убрать и проверить ))
Тогда компилятор его подставит и выдаст ворнинг.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39867530
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttДешёвый это задать тип ячейкиТы просто мало работал с экселем )))
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39867543
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProhVosttДешёвый это задать тип ячейкиТы просто мало работал с экселем )))

та не, опыта хватает.
в энтерпрайзе его наелся по самое нимагу )
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39867577
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttAntonariyТаким образом, подмена полей в наследнике это наиболее дешевый способ лечения данного косяка.

Дешёвый это задать тип ячейки, а это адский костыль в кубе :)Ты просто не знаешь, какова задача. В ее контексте ты предложил такой адский треш, что ни в сказке сказать, ни пером описать. А контекст - функция листа.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39867583
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyТы просто не знаешь, какова задача. В ее контексте ты предложил такой адский треш, что ни в сказке сказать, ни пером описать. А контекст - функция листа.

Ну как же незнаю, ты её описал. Изначально задача решена через одно место, раз понадобились такие костыли :)
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39867585
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Помимо этого, ты предлагаешь заменить решение, 99% которого у тебя перед глазами, написанное декларативным языком, понятным даже умственно неполноценному джуниору, на императивный говнокод. Все равно что вместо linq использовать циклы.

Это не считая того, что если бы это был макрос, то твое решение засрало бы универсальный дженерик-метод, требованиями конкретной модели.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39867587
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttAntonariyТы просто не знаешь, какова задача. В ее контексте ты предложил такой адский треш, что ни в сказке сказать, ни пером описать. А контекст - функция листа.

Ну как же незнаю, ты её описал. Изначально задача решена через одно место, раз понадобились такие костыли :)похоже твой опыт работы с экселем годится только для того, чтобы тыкать в него палочкой
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39867590
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyПомимо этого, ты предлагаешь заменить решение, 99% которого у тебя перед глазами, написанное декларативным языком, понятным даже умственно неполноценному джуниору, на императивный говнокод. Все равно что вместо linq использовать циклы.

Это не считая того, что если бы это был макрос, то твое решение засрало бы универсальный дженерик-метод, требованиями конкретной модели.

Не кипятись :) Для решения задачи установки типа ячейки по типу значения хватит и уровня джуна.
А решение задачи через префикс ' -- решение для домохозяек, это известный костыль для тех, кто не умеет работать с экселем :)
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39867593
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttAntonariyПомимо этого, ты предлагаешь заменить решение, 99% которого у тебя перед глазами, написанное декларативным языком, понятным даже умственно неполноценному джуниору, на императивный говнокод. Все равно что вместо linq использовать циклы.

Это не считая того, что если бы это был макрос, то твое решение засрало бы универсальный дженерик-метод, требованиями конкретной модели.

Не кипятись :) Для решения задачи установки типа ячейки по типу значения хватит и уровня джуна.
А решение задачи через префикс ' -- решение для домохозяек, это известный костыль для тех, кто не умеет работать с экселем :)чудак человек, ты хоть в курсе, что функция листа экселя не имеет права ничего делать на листе, кроме возврата значения в него?
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39867598
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariyчудак человек, ты хоть в курсе, что функция листа экселя не имеет права ничего делать на листе, кроме возврата значения в него?

я до сих пор не понимаю, чего ты так защищаешь говнокод :)
да, изредко бывает, что проще какое-то разовое решение наговнокодить на коленке, если на выброс, но не говорить, что это вполне себе "боевое решение"
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39867599
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttAntonariyчудак человек, ты хоть в курсе, что функция листа экселя не имеет права ничего делать на листе, кроме возврата значения в него?

я до сих пор не понимаюна этом мог бы и остановить излияния, твой уровень владения предметом уже понятен.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39867600
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariyпохоже твой опыт работы с экселем годится только для того, чтобы тыкать в него палочкой

опыт позволяет не создавать самому себе нелепые тупиковые ситуации, а находить надёжные, расширяемые решения. я хз где вы там проблемы себе находите.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39867601
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttAntonariyпохоже твой опыт работы с экселем годится только для того, чтобы тыкать в него палочкой

опыт позволяет не создавать самому себе нелепые тупиковые ситуации, а находить надёжные, расширяемые решения. я хз где вы там проблемы себе находите.бла бла бла
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39867602
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariyна этом мог бы и остановить излияния, твой уровень владения предметом уже понятен.

ну слушай. я могу задать тип ячейки, а ты не можешь, что вынужден городить уродливые костыли.
о каком уровне ты нам тут заливаешь?
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39867603
Фотография SIMPLicity_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Што тута понимают под словом "функия Экселя"?

PS Если у нас целая колонка ОГРН-ов то, простите мой португальский,- какого х@я бы не сделать разом столбец (или диапазон) текстовым?! Вы ужо меня извеняйте, но оформительская операция над ячейкой в MSExcel занимает почти столько же времени (а, возможно,- и всех ресурсов вообще) сколько над диапазоном. С кальком, ЕМНИП, дело лучше обстоит.

PPS Может быть, конечно, чего-нить за сто лет-то и поменялось....
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39867604
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SIMPLicity_PS Если у нас целая колонка ОГРН-ов то, простите мой португальский,- какого х@я бы не сделать разом столбец (или диапазон) текстовым?! Вы ужо меня извеняйте, но оформительская операция над ячейкой в MSExcel занимает почти столько же времени (а, возможно,- и всех ресурсов вообще) сколько над диапазоном. С кальком, ЕМНИП, дело лучше обстоит.

PPS Может быть, конечно, чего-нить за сто лет-то и поменялось....

ничё не поменялось. печаль.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39867608
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt, слушай, в части понимание где Excel, какие у него внутренние типы данных хранения,
как они отличаются от форматированного представления в клетке, как Excel принимает значения, и почему не нужно золота форматирования клеток ему, Antonariy тебя побьёт с завязанными чёрной лентой глазами.
Даже если на самом деле пишет говнокод.
Просто попробуй учесть это обстоятельство.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39867609
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
boobyhVostt, слушай, в части понимание где Excel, какие у него внутренние типы данных хранения,
как они отличаются от форматированного представления в клетке, как Excel принимает значения, и почему не нужно золота форматирования клеток ему, Antonariy тебя побьёт с завязанными чёрной лентой глазами.
Даже если на самом деле пишет говнокод.
Просто попробуй учесть это обстоятельство.

да я не против, никого не осуждаю за говнокод
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39867610
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttAntonariyна этом мог бы и остановить излияния, твой уровень владения предметом уже понятен.

ну слушай. я могу задать тип ячейкиок, авось через пару лет научишься и шрифт менять)))
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39867611
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
booby,

на текущий момент я ревностно отношусь к написанию говнокода только к тем, кто стремиться быть и оставаться профессиональным разработчиком. но как к способу хоть как-то решить задачу, а там трава не расти, довольно прохладно.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39867616
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SIMPLicity_Што тута понимают под словом "функия Экселя"?Функция ЛИСТА экселя. Это та хрень, которая пишется в ячейку после знака равенства.

SIMPLicity_PS Если у нас целая колонка ОГРН-ов то, простите мой португальский,- какого х@я бы не сделать разом столбец (или диапазон) текстовым?!Такого, что функции листа этим не занимаются. В принципе. Этим занимаются макросы.
А конкретно та функция листа, которая выводит ОГРНы - функция-массив. То есть она занимает не ячейку, а диапазон.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39867617
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariyок, авось через пару лет научишься и шрифт менять)))

есть проблема, значение с одинарной кавычкой в ячейке, сохраняется вместе с кавычкой
а в текстовой ячейке число сохраняется без кавычки

я просто думал, что такие "решения" канули в лету ещё лет 10 назад
ан нет. продолжают жить и здравствовать.

покажешь как наяривая палочкой разжечь костёр? ))))
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39867620
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttbooby,

на текущий момент я ревностно отношусь к написанию говнокода только к тем, кто стремиться быть и оставаться профессиональным разработчиком. но как к способу хоть как-то решить задачу, а там трава не расти, довольно прохладно.
это частное мнение, выраженное по абстрактному вопросу.
Утверждение об умении задать текстовый формат ячейки листа, наоборот, конкретно.
И, если к утверждению абстрактному, самому по себе, можно не относиться никак, то утверждение конкретное даёт оценочный хинт и для абстрактных суждений.
Это к вопросу о говнокоде.
Кто поверит общей оценке, если не верит в частную.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39867621
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
boobyэто частное мнение, выраженное по абстрактному вопросу.
Утверждение об умении задать текстовый формат ячейки листа, наоборот, конкретно.
И, если к утверждению абстрактному, самому по себе, можно не относиться никак, то утверждение конкретное даёт оценочный хинт и для абстрактных суждений.
Это к вопросу о говнокоде.
Кто поверит общей оценке, если не верит в частную.

ну хз. возможно в этом и был какой-то смысл, автор его скрыл, затем набросился с пеной, дескать вы же задачи не знаете, но осуждаете. типа как будто кто-то запрещал раскрыть ему детали задачи, вместо того, чтобы умничать :)
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39867629
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttAntonariyок, авось через пару лет научишься и шрифт менять)))

есть проблема, значение с одинарной кавычкой в ячейке, сохраняется вместе с кавычкойОдинарная кавычка называется апостроф. Ты не в курсе или тебя прикалывает писать "одинарная кавычка"?

Лучше бы тебя волновали проблемы пользователей, а не экселя. Тем более, что у него проблем нет, пусть хранит как хочет. Главное, что он отдает эти данные наружу без апострофов - попробуй скопипастить в блокнот. Апостроф это декорация, а не данные.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39867633
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttboobyэто частное мнение, выраженное по абстрактному вопросу.
Утверждение об умении задать текстовый формат ячейки листа, наоборот, конкретно.
И, если к утверждению абстрактному, самому по себе, можно не относиться никак, то утверждение конкретное даёт оценочный хинт и для абстрактных суждений.
Это к вопросу о говнокоде.
Кто поверит общей оценке, если не верит в частную.

ну хз. возможно в этом и был какой-то смысл, автор его скрыл, затем набросился с пеной, дескать вы же задачи не знаете, но осуждаете. типа как будто кто-то запрещал раскрыть ему детали задачи, вместо того, чтобы умничать :)Я вторым сообщением написал, что дело происходит в функции листа. Но ты не отдуплил, стал настаивать на своем. А теперь завращал тухесом как Карлсон вентилятором. Красава, чо.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39867642
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy... дело происходит в функции листа...

Разумно написанная скалярная функция листа должна возвращать Variant.
И вся задача - правильно сформировать подтип этого вариант и значение, соответствующее подтипу.
Апостроф для строк, состоящих из чисел, именно в контексте скалярной функции листа не требуется ,
независимо от способа форматирования клетки.

По крайней мере в VBA.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39867648
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дело происходит не в вба. И длинные числа не единственый нюанс. Например, эксель не понимает даты старше конца 19го века (есть такие даты основания банков), при попытке присвоить такую дату эксель выдает эксепшн, ее нужно конвертировать в строку. Причем, если присваиваешь массив, то присваивпется все, кроме этой даты, несмотря на эксепшн. Правда, этот нюанс обходится без наследования и new.

В общем, это была лишь демонстрация того, что от new есть не только теоретическая польза. Впрочем, как справедливо заметили, это работает и без new, но чем меньше ворчит компилятор, тем лучше.
...
Рейтинг: 0 / 0
Наследование и интерфейсы.
    #39868021
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyЯ вторым сообщением написал, что дело происходит в функции листа. Но ты не отдуплил, стал настаивать на своем. А теперь завращал тухесом как Карлсон вентилятором. Красава, чо.

чего ты так возбудился-то? )
видимо задел за живое.

ладна-ладна, ты бох экселя
...
Рейтинг: 0 / 0
384 сообщений из 384, показаны все 16 страниц
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Наследование и интерфейсы.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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