Как стать автором
Обновить
0
Карма
0
Рейтинг
Алексей Кузнецов @NoofSaeidh

Разработчик

  • Подписчики
  • Подписки

Творческое использование методов расширения в C#

«Добавление методов к перечислениям»
Можно пожалуйста не надо, особенно если это ваше перечисление. Лучше написать класс / структуру с нормальными методами без публичного конструктора и несколькими статическими риоднли членами из этого типа. Работает все точно так же как перечисление но без попыток натянуть сову на глобус.
Ну и вообще если вам надо добавить какую либо логику в само перечисление, значит вы делаете что-то не так.

Творческое использование методов расширения в C#

Можно еще harmony использовать (он хотя бы не изменяет il code), но это все равно не то, что хочется делать в тестах.

Как вызвать утечку памяти в Angular-приложении?

«Очень легко забыть добавить в компонент destroy$, а также забыть вызвать next и complete в хуке жизненного цикла ngOnDestroy»

Не совсем понятно зачем создавать лишний объект, если метод subscribe() возвращает Unsubscribable объект с методом unsubscribe(), который делает ровно то же самое, при чем это является предпочтительным способом.
(Но ngOnDestroy все равно надо не забыть добавить вместе с вызовом unsubscribe).
Кстати можно несколько подписок в один Unsubscribable оформить вызывая метод add() subscribe1().add(subscribe2).add(subscribe3)
что бы потом все их освободить одним вызовом unsubscribe().

Новые возможности интерфейсов в C# 8

Я бы ещё добавил (уточнил) что в интерфейсах теперь можно писать вложенные классы, в том числе другие интерфейсы.

Новые возможности интерфейсов в C# 8

Из за отсутствия такой возможности ранее и, как раз таки, избегания добавления новых членов в интерфейсы, в дотнете ICollection и IReadonlyCollection не совместимы (потому что IReadonlyCollection появился позже).

Новые возможности интерфейсов в C# 8

Это очень удобно например для IEnumerable (что они правда пока что не сделали)
Потому что в 99.99% случаях при имплементации IEnumerable приходится писать два GetEnumerator, сейчас же можно сделать реализовать не обобщенный интерфейс в обобщенном.
И ещё очень надеюсь что наконец то ICollection станет реализовывать IReadonlyCollection. (Это брейкинг ченж без дефолтных имплементаций). Лишь бы они на это не забили.

Пишем «калькулятор» на C#. Часть I. Вычисление значения, производная, упрощение, и другие гуси

так как это экспршн, то можно сделать кастомный статический класс со всеми необходимыми функциями.
ну а упрощать он не умеет конечно ибо обычно это просто вызов функции, например: System.Math.Sqrt(a). можно по имени функции вообще парсить и вручную оптимизировать и не вызывать системные функции.

C++ против C#

Dispose ничего общего с GC в общем случае не имеет, и в большинстве не системных классах используется для иных целей.
Dispose используют для очистки ресурсов только когда надо освобождать неуправляему память, например при работе напрямую с DLL.
Но в реальности (продакшене) это используется как обычный метод который будет вызываться в using, с помощью него можно писать, например, структурные логи.
using(Log.Header())
using(Log.Body())
Для managed ресурсов явное написание Dispose вообще не имеет смысла.

Еще 9 хитростей для работы с Visual Studio

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

.NET зоопарк под призмой NET Core

Это как с поддержкой юникода в консоли — поддержка есть, рендера нет (с недавних пор).
Так что написать можно, но только как библиотеку — что бы запустить, нужен проект на .net core или framework.
В общем немного странное утверждение конечно.

Представлен .NET 5

чекаут файлов тогда уж :)

Как объединить содержимое файлов в PowerShell. И при этом не пострадать

Странно что никто не вспомнил про -Exclude:
ls *.log -Exclude 'result.log' | cat > 'result.log'

полная версия:
Get-ChildItem -Filter *.log -Exclude 'result.log'| Get-Content | Out-File result.log

Disposable ref structs в C# 8.0

ref struct не может быть упакована только с точки зрения языка. MSIL ничего о ref struct не знает. Кстати упаковать ref struct не так уж сложно с помощью активатора, если очень хочется.

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность