пятница, 8 июня 2018 г.

С#/С++

Вспоминаю с#. Веду протокол изменений, разностей и вообще того, что удивило и порадовало.
Разница с с++:
Это предопределённых порядок выполнения операндов слева направо. В с++ такого сейчас нет, компилятор может оптимизировать все очень странно(про порядок вычисления операндов, вроде это так).

Разница между && и &. & не сокращают вычисления, && сокращают. С++ компилятор может действовать как хочет. Страуструп пишет, что вычисления с++ всегда сокращенные. Сейчас в статьях встречала, что порядок вычисления условий в заголовке условного оператора не определён, те зависит от компилятора, в с# всегда слева направо).

В плане математики в с# все более строго. Неявные преобразования с потерей информации запрещены .

Ну, сборщик мусора. Лафа и халява.

Жёсткие различия между struct и class. К этому нужно будет привыкнуть.

Область видимости переменной - это целый блок программы, где она описана, а не только блок, начиная с места непосредственного объявления. Тоже кажется нелогичным, но это так.

В с# мажно сделать псевдонимы для имён библиотек .

Можно импортировать не только пространство имён, но лишь отдельный тип (видимо тоже удобно для разрешения конфликтов имён).

Что такое out в списке типов аргументов функции - пока не дошла, только встретила использование.

Метод сжатый до выражения- это вещь для таких лентяев как я. Писать => проще чем кучу всего обычного. ; в конце метода нужна.

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

Короткий инициализатор свойств - круто

Разный уровень доступа к свойствам.

Интересный вариант для совместной работы - это  partial class. Особенно важно, что в каждой части могут быть объявлены свои интерфейсы для реализации и можно друг другу не мешать.

На сегодня все.

Комментариев нет:

Отправить комментарий