ПО, ЭВМ и АСУ из Таможенного Союза

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.



Недостатки языка C#

Сообщений 1 страница 3 из 3

1

https://www.youtube.com/watch?v=ns8K-egSLzo
   донаты собирает через youtube и через patreon

10. Значения параметров по-умолчанию в иерархии
  (предлагаемые решения - статический анализатор, который будет предупреждать о проблеме,
  или запретить параметры по-умолчанию во всех функциях, кроме статических)
9. Интерфейсы IEnumerable<T> и IQueryable<T>, второй наследуется от первого,
  но работают они по-разному семантически. Первый локально, второй формирует запросы к удалённому ресурсу
  и выполнение происходит на удалённом ресурсе.
  Если применить extension-метод не к тому типу, то есть риск затянуть с удалённого ресурса гигабайты или терабайты данных.
  Ошибиться таким образом легко и мало инструментов, которые бы об этом предупреждали.
  Нужно быть к этому внимательными. И нужно обучать этому всех новых сотрудников.
8. void не является типом
  из-за этого нельзя единообразно обрабатывать делегаты, которые возвращают void.
  приходится делать два метода. А если используются асинхронные методы, то четыре.
  Хотя в unsafe-контексте о похожей проблеме подумали.
7. Синтаксис подписки на события и отписки от них.
  нужно знать кто был подписчиком, чтобы совершить отписку.
  Если мы захотим подписать анонимный метод, то отписать не сможем, утечка памяти.
  Решение - использование IDisposable
6. Оператор switch (точнее выражение, expression)
  непривычный синтаксис, можно было сделать удачнее
5. Отсутствие вывода типа в конструкторах
  при этом для статического метода компилятор всё может сделать.
4. Разные модификаторы доступа по-умолчанию в разных контекстах
  класс внутри namespace по умолчанию internal
  класс внутри класса по умолчанию pivate
  это связано со старением языка. Хотелось бы новый мейнстримный язык, F# не годится.
  языки программирования с 2000 по 2020-е стали значительно круче
3. Слабая система дженериков (шаблонов)
  3.1. нельзя проверить, реализует ли объект типизированный интерфейс
  3.2. нельзя наложить ограничения на типы более разнообразно (недостаточно синтаксиса)
2. Конструкторы
методы, деструкторы, финализаторы - неконсистентно используемая терминология
из-за обязательного вписывания конкретных имён труднее впрямую применять copy-paste,
не работают поиск и замена, потому что все конструкторы в проекте называются по-разному
в других языках (вроде TypeScript или Swift) это уже исправлено (ключевое слово "constructor" как слышится, так и пишется)
)) необязательные запятые хотелось бы добавить в прототипы функций и из вызовы
)) массивы не являются generic-овыми
1.   Проблема добавления аргументов в конструкторы базовых классов

Обсуждение на RSDN:
http://rsdn.org/forum/dotnet/8496544.all

Отредактировано Лис (2023-04-08 00:24:58)

0

2

И ещё вопрос:
nil это ноль, или отдельный тип?
И если отдельный тип, то что это?
Можно ли его сгенерировать или
описать числом (скорее всего, нет)?

0

3

В C# эта концепция по-другому называется, не nil, а null:
https://learn.microsoft.com/ru-ru/dotne … words/null

и там довольно много с ней связано, например есть даже специальная опция компилятора.

Поэтому, создал бы ты отдельный топик.

Отредактировано Лис (2023-04-10 14:05:54)

0