Как помочь студентке по инфо-тематике? - страница 6

 
Vladislav Boyko #:

...

Сравните C# и C++. Это гораздо интересней. Вот вам для затравки вопросы от аматора:

  • почему в C# не стали добавлять параметрические макросы? Я думаю, тот факт, что макросы усложняют чтение кода (при грамотном использовании - улучшают, как по мне) вряд-ли является достаточным что бы отказаться от их добавления. Должно быть что-то еще.
  • почему в C# нет member initializer list? как с этим жить и чем его заменить?
  • чем отличается scope resolution operator от namespace alias operator?
  • почему в C# нет множественного наследования и как принято поступать в ситуациях, когда очень хочется множественно унаследоваться?
И главный вопрос - почему в С# нельзя писать процедурно.))
 
Vasiliy Sokolov #:
штанишки должны эволюционировать во что-то большее

Если пошел обратный процесс то штанишки опять придется кому то менять.

Из всех уже имеющихся у меня на карандаше форумян список сужается до восьми, которым менять рано.

 
Uladzimir Izerski #:
Из всех уже имеющихся у меня на карандаше форумян список сужается до восьми

Уладзимир Изерски сужает список имён. 2024.

*

 
Sergey Gridnev #:

Уладзимир Изерски сужает список имён. 2024.

Вообще-то он делает наоборот, он их разужает (антоним к слову "сужает"), уже 8 кто его обидел, скоро будет больше.

 
Реter Konow #:
И главный вопрос - почему в С# нельзя писать процедурно.))

Та можно, почему нет?)


Я написал вопросы, на которые сам не могу пока что найти ответ, так как я еше не очень далеко продвинулся в C#. За исключением третьего вопроса, который легко гуглится, он просто для количества. Если кто из знатоков напишет свою точку зрения - буду благодарен.

почему в C# нет member initializer list? как с этим жить и чем его заменить?

Вот примитивный пример (на MQL4 - первое, что под руку попалось). Класс принимает в конструкторе координаты точек линии и с помощью метода valueOn() можно получить ее цену на любом баре.

class CLineByIdxAndPrc
  {
public:
   double       valueOn(int barIdx) const { return(coeffK * barIdx + coeffB); }
//---
public:
   const double prcLeft;
   const double prcRight;
   const int    idxLeft;
   const int    idxRight;
protected:
   const double coeffK;
   const double coeffB;
public:
                CLineByIdxAndPrc(double a_prcLeft, double a_prcRight, int a_idxLeft, int a_idxRight)
                   : prcLeft(a_prcLeft),
                     prcRight(a_prcRight),
                     idxLeft(a_idxLeft),
                     idxRight(a_idxRight),
                     coeffK((prcRight - prcLeft) / (idxRight - idxLeft)),
                     coeffB(prcLeft - coeffK * idxLeft) {}
  };

Прикол в том, что все поля константны. Я просто сделал нужные поля публичными; благодаря member initializer list, все поля защищены, мне не нужны геттеры/сеттеры, мне не нужно париться, защищая от случайного изменения то, что не должно быть изменено после инициализации. Все удобно упаковано, не громоздко, защищено и прозрачно. Плюс я подозреваю, что такие конструкции очень хорошо оптимизируются компилятором (если создается автоматический экземпляр на каждой итерации цикла, например).

Я часто упаковываю некоторые вычисления подобным образом и считаю это очень удобным.

Теперь вопрос: как сделать аналог на C# (там нет member initializer list)? Возможно, аналог там есть (как я говорил, я не очень далеко продвинулся); если аналог все-таки есть, то хотелось бы что бы кто-то его заспойлерил, что бы в процесе изучения C# продолжать писать в привычной себе манере.

 
Vladislav Boyko #:
Теперь вопрос: как сделать аналог на C#

Аа, ну с помощью readonly, наверное😄

Только что еще раз зашел в документацию и случайно наткнулся. До этого все мимо проходил.

Ну вот подобного рода сравнения могли бы представлять интерес (как минимум, для меня😄).

 
Sergey Gridnev #:

Уладзимир Изерски сужает список имён. 2024.


Мне понравилась идея ИИ сужать список.

Не поверите.)

Надо выбрать 10 самых умных и 10 самых тупых собеседников для уточнения среднего показателя умственного показателя собеседника.

Мне даже не удобно озвучивать для вас оценку (предложенною ИИ) о вас )

==

У Алексея Николаева, например,  уже почти 2 балла.

 

Искусственный интеллект круто изменит нашу жизнь. Это уже аксиома.

Политика на доминировании фиантных  бумажных средств уже перешла рубеж. Все красиво остались с бумагой. Красивая бумага для будущих коллекционеров.

Ну мы же уже сталкивались с Еуропой в начала 20 го века. Бумага хороший вестник будущей истории.

 

Не хочу никого пугать

Просто для понимания.

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

Ждете с нетерпением повторения?)) А может пионерский лагерный порядок??

 
Uladzimir Izerski #:

Не хочу никого пугать

Просто для понимания.

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

Ждете с нетерпением повторения?)) А может пионерский лагерный порядок??

Вова не переживай! Твою пенсию никто не тронет, спи спокойно