Строки в dotnet являются предназначенной только для чтения последовательностью Char
-ов. Об этом явно написано в документации MicrosoftЧитать полностью »
Рубрика «csharp»
Как изменять строки в dotnet
2023-02-25 в 11:44, admin, рубрики: .net, C#, csharp, dotnet, invoke, span, изменение строк, ненормальное программирование, строкиSimulating Return Type Inference in C#
2022-06-28 в 17:00, admin, рубрики: .net, C#, csharp, dotnet, inference, type inference, обобщения, обобщённое программирование, обобщенные типы, ооп, Программирование
Мне по-настоящему нравится больше чего-либо в разработке ПО делать фреймворки, позволяющие другим разработчикам создавать что-то крутое. Иногда, в погоне за идеальным кодом, мне на ум приходят странные идеи, при реализации которых C# может дойти до предела своих возможностей.
NBomber как альтернатива JMeter для .NET разработчика
2022-05-07 в 18:20, admin, рубрики: .net, C#, csharp, dotnet core, jmeter, NBomber, performance, performance analysis, performance tests, высокая производительность, Тестирование веб-сервисовКак и многие разработчики, впервые столкнувшиеся с нагрузочным тестированием, я начал с JMeter. Для ознакомления и простых сценариев JMeter полностью меня устраивал, но с усложнением задач и потребностью в большем контроле я начал задумываться о поиске более удобной альтернативы. Особенно хотелось чтобы инструмент легко адаптировался или уже был адаптирован под экосистему .NET.
В этой статье мы рассмотрим NBomber как легкую для освоения альтернативу JMeter, а также постараемся ответить на вопрос "Почему я должен проводить нагрузочное тестирование именно с NBomber ?".
Поговорим о фичах в предварительной версии C# 11
2022-02-28 в 20:55, admin, рубрики: .net, C#, csharp, null, open source, skillfactory, Блог компании SkillFactory, дизайн, интерполяция, итераторы, проверки, Программирование, строки, строки кода
К старту курса по разработке на C# рассказываем о новых конструкциях в предварительной версии языка C# 11. Среди них шаблоны списка, проверка Parameter на null и возможность переноса строки при интерполяции строк. За подробностями приглашаем под кат.
Ускоряем цикл foreach до for
2021-09-01 в 8:35, admin, рубрики: .net, C#, csharp, performance, высокая производительностьПривет! Хочу рассказать об интересном опыте, как я писал енумератор для типа Range
, который был бы таким же дешевым, как цикл for
.
Что мы хотим?
У System.Range, как известно, очень красивый синтаксис создания:
var a = 1..2; // эквивалент new Range(1, 2)
Поэтому, как эксперимент, я решил абузить его для цикла foreach
, как замена for
:
foreach (var i in 1..5)
Console.Write(i);
(выводит 12345)
Для foreach Розлин требует метод GetEnumerator
, который возвращал бы что-то, у чего есть bool MoveNext()
и T Current. Этот метод можно добавить как метод расширения:
Читать полностью »
Компилируем математические выражения
2021-03-13 в 8:01, admin, рубрики: .net, AngouriMath, C#, csharp, expression, linq, Алгоритмы, компиляция, математика, ПрограммированиеПривет. В этом очерке расскажу, как я реализовывал компиляцию математических (численных и логических) выражений в делегат при помощи Linq Expression.
Навигация: Проблема · Правила компиляции · Компилятор · Дефолтные правила · Красивый API · Производительность · Примеры работы · Читать полностью »
C# программист, испытай себя — найди ошибку
2021-02-01 в 12:30, admin, рубрики: .net, C#, csharp, pvs, pvs-studio, Блог компании PVS-Studio, ПрограммированиеАнализатор PVS-Studio регулярно пополняется новыми диагностическими правилами. Что интересно, часто диагностики обнаруживают подозрительные фрагменты кода еще до окончания всех работ. Например, в процессе тестирования на open-source проектах. Одной из подобных интересных 'находок' и хотелось бы поделиться сегодня с вами.

Генерация типизированных ссылок на элементы управления Avalonia с атрибутом x:Name в XAML с помощью C# Source Generators
2020-11-29 в 15:53, admin, рубрики: .net, avalonia, C#, csharp, dotnet, GUI, mvvm, reactiveui, Разработка под Linux, Разработка под MacOS, разработка под windows
В апреле 2020-го года разработчиками платформы .NET 5 был анонсирован новый способ генерации исходного кода на языке программирования C# — с помощью реализации интерфейса ISourceGenerator
. Данный способ позволяет разработчикам анализировать пользовательский код и создавать новые исходные файлы на этапе компиляции. При этом, API новых генераторов исходного кода схож с API анализаторов Roslyn. Генерировать код можно как с помощью Roslyn Compiler API, так и методом конкатенации обычных строк.
В данном материале рассмотрим процесс реализации ISourceGenerator
для генерации типизированных ссылок на элементы управления AvaloniaUI, объявленные в XAML. В процессе разработки научим генератор компилировать XAML с помощью API компилятора XamlX, используемого в AvaloniaUI, и системы типов XamlX, реализованной поверх API семантической модели Roslyn.
Как мы переосмыслили работу со сценами в Unity
2020-10-17 в 10:52, admin, рубрики: C#, csharp, Gamedev, unity, unity3d, разработка игрUnity, как движок, имеет ряд недостатков, но которые благодаря возможностям для кастомизации и инструментам для кодогенерации, можно решить.
Сейчас я вам расскажу о том, как мы написали плагин для Unity на основе пост-процессинга проектов и кодогенератора CodeDom.
Проблема
В Unity загрузка сцен происходит через строковой идентификатор. Он не стабильный, а это означает, что он легко изменяем без явных последствий. Например, при переименовании сцены всё полетит, а выяснится это только в самом конце на этапе выполнения.
Лучшие практики повышения производительности в C#
2020-05-18 в 9:48, admin, рубрики: best practices, C#, csharp, development, dotnet, performance, software, Блог компании OTUS. Онлайн-образование, Программирование, СофтВсем привет. Мы подготовили перевод еще одного полезного материала в преддверии старта курса «Разработчик С#». Приятного прочтения.
Поскольку недавно мне довелось составлять список лучших практик в C# для Criteo, я подумал, что было бы неплохо поделиться им публично. Цель этой статьи — предоставить неполный список шаблонов кода, которых следует избегать, либо потому что они сомнительны, либо потому что просто плохо работают. Список может показаться немного рандомным, потому что он слегка выдернут из контекста, но все его элементы в какой-то момент были обнаружены в нашем коде и вызывали проблемы в продакшене. Надеюсь, это послужит хорошей профилактикой и предотвратит ваши ошибки в будущем.
Также обратите внимание, что веб-сервисы Criteo полагаются на высокопроизводительный код, отсюда и необходимость избегать неэффективный код. В большинстве приложений не будет заметно ощутимой разницы от замены некоторых из этих шаблонов.
И последнее, но не менее важное: некоторые пункты (например, ConfigureAwait
) уже обсуждались во многих статьях, поэтому я не буду подробно останавливаться на них. Цель заключается в том, чтобы сформировать компактный список моментов, на которые нужно обращать внимание, а не давать подробную техническую выкладку по каждому из них.Читать полностью »