Pull to refresh

Comments 9

1. Код, который выполняется до Main

.cctor, не? С классическим TypeInitializerException?

В 21-м месте библиотеки классов. Например, ArgumentNullException.ThrowIfNull:

Штука прикольная и в некоторых местах прям очень интересная, но я предпочитаю избегать stackwalk при проверке на null (Старая привычка с шаблонов в C++):

_ = value ?? throw new ArgumentNullException(nameof(value));

_privateField = argumentValue ?? throw new ArgumentNullException(nameof(value));

var methodResult = InvokeSomeMethod(arg1, arg2)
  ?? throw new InvalidOperationException(nameof(value));

Спасибо за внутрянку :)

Да, он самый — .cctor модуля и исключение оборачивается в TypeInitializerException.

Про ?? throw. Да как бы рабочее но по замерам там нет особой разницы, чистая мелочь 0,3944 против 0,3969 нс.

По поводу скорости, то есть ещё атрибут:

[MethodImpl(MethodImplOptions.AggressiveInlining)]

Но я его на проде ни разу не видел. Т.к. в момент появления он был "на будущее".
И так его все и забыли...

Там это уже на откуп конткретному CLR, а там уже как карта ляжет, по аналогии с Мьютексами на *nix машинах.

Хм, он и в дотнете повсюду, "ну и мы тоже"

...главное помнить, что он ничего не гарантирует. И размер кода на горячем пути можно раздуть до неприличия.

"С++ сложен и небесопасен для бизнеса. Вот придет .Net и все будет хорошо, зачем вам указатели и работать с памятью ?" говорили они в 1999 ...2001 году. Как сейчас помню 😳🧐 Прошло всего-то 20+ лет...
Такого наворотили, мама не горюй..

Разве кто то Вас заставляет всё это использовать в своих программах? Как по мне, 99% написанного в "А чё, так можно было?" это для "чтения на ночь" - что бы спалось лучше. IMHO, вряд ли это когда то пригодится в реальной жизни. Согласен с ZetaTetra - спасибо автору за описание таких тонкостей.

Как по мне, 99% написанного в "А чё, так можно было?" это для "чтения на ночь" - что бы спалось лучше. IMHO, вряд ли это когда то пригодится в реальной жизни.

Я бы так не сказал: почти из каждой статьи беру что‑то полезное для своих числодробилок на C#. Вот тот же SkipLocalsInit из этой статьи — очень полезная вещь, если у вас много массивов на стеке лежит (я их в одном проекте столько пложу, что даже приходится увеличивать в разы стандартный размер стека в тредах).

Можно подробнее?

> Разве кто то Вас заставляет всё это использовать в своих программах?
Никто не заставляет. Я отлично помню как маркетинг пропихивал .Net, пытались и в бизнес его впихнуть и подвинуть Java. Я отлично помню .Net 1 beta 2, и тестовые миграции кода VB 6 в VB.Net. И отлично помню с чего начиналось, вплоть до обещаний. Кто-то ее помнит "Windows.NET is the next generation of Windows. " ?
У меня еще пару проектов на C# и .Net 1.0 осталось. И я вижу эволюции платформы, видно сколько усилий в нее вложено за это время и видно что все более и более дает доступа к низкоуровневым вещам, а они требуют весьма нетривиальных знаний что бы их правильно использовать.

Sign up to leave a comment.

Articles