Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
Эксперт .NET
 Аватар для Wolfdp
3790 / 1767 / 371
Регистрация: 15.06.2012
Сообщений: 6,543
Записей в блоге: 3

Нежданчик в наследовании

01.10.2018, 17:17. Показов 2196. Ответов 41
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
или стреляем себе в ногу с помощью C#

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
        static void Main(string[] args)
        {
            //CheckServiceProtocol();
 
            var b = new B();
            b.Test(); // False
            b.Run(); // True
            b.Run2(); //False
 
            A a = b;
            a.Test(); // True (!)
            a.Run(); // True
        }
 
    abstract class A
 
    {
        public virtual void Test(bool v = true)
        {
            Console.WriteLine(v);
        }
 
        public void Run()
        {
            Test();
        }
    }
 
    class B : A
    {
        public override void Test(bool v = false)
        {
            Console.WriteLine(v);
        }
 
        public void Run2()
        {
            Test();
        }
    }
В принципе логика понятна (компилятор просто подставляет переменую во время компиляции из "текущего" класса), но я бы ожидал более строгого следования контракту...
5
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.10.2018, 17:17
Ответы с готовыми решениями:

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

Конструктор при наследовании
Здравствуйте. Нужно унаследовать класс B от класса A, при этом конструктор в классе B должен принимать объект класса A в качестве...

Ошибка в наследовании классов
есть 2 класса , один должен наследовать другой вот первый класс struct people { public string surname, name,...

41
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
03.10.2018, 08:20
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Wolfdp Посмотреть сообщение
И перекомпелировать/перенабирать тебе все твое приложение заново.
Не просто перекомпилировать, а выискивать все места, где вызывается этот метод и менять передаваемое значение на то, которое планировалось изначально.
Или менять значение по умолчанию в унаследованном типе (а такой возможности может и не быть).
Или создавать ту же перегрузку.

Цитата Сообщение от Wolfdp Посмотреть сообщение
а можно ли как-то технически ограничить контракт переменой по умолчанию?
Неа.

Цитата Сообщение от Umatkot_Primtep Посмотреть сообщение
Вероятно, те, кто писал эти райтеры уже знали о поведении значений по умолчанию в виртуальных методах и просто не использовали такую возможность в своём коде.
Не, сейчас-то все работает нормально.
Я о том, что творилось бы, если бы значения по умолчанию тоже переопределялись и вычислялись в рантайме в зависимости от ресивера. Но, к счастью, этого нет

Цитата Сообщение от Umatkot_Primtep Посмотреть сообщение
Интересный тут пост для "начинающих" получился
Да я бы вообще переименовал этот раздел в "Решение лаб", а все темы, этого не касающиеся, перенес просто в C#.
А то действительно непонятно какой здесь критерий "начинаемости", да и копаться в темах а-ля "сделайте за меня" в поисках интересных желания все меньше и меньше.
0
03.10.2018, 08:54

Не по теме:

Цитата Сообщение от kolorotur Посмотреть сообщение
копаться в темах а-ля "сделайте за меня" в поисках интересных желания все меньше и меньше.
очень даже согласен.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.10.2018, 08:54

Вопрос о наследовании типов
Товарищи, подскажите пожалуйста static void Main() { object A = new string { "1", "2", "3" }; ...

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

Нюансы при наследовании
Такой пример: using System; using System.Collections.Generic; using System.Linq; using System.Text; using...

Создание Dictionary при наследовании
Проблема такова, есть абстрактный класс и собственно 2 наследника. Есть list типа базового класса. Как с помощью linq создать dictionary...

Вызов конструктора при наследовании
Как вызывается конструктор класса наследующегося другим классом. public class A { public A() { ... } } ...


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

Или воспользуйтесь поиском по форуму:
42
Ответ Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru