Рубрика «C#»

Всем привет. Не так давно добавлял поддержку кастования через 'as' к себе в компилятор и задался вопросом - в каких случаях я получу Compile Time ошибку? Если заинтересовал - прошу под кат.

Решил начать с простого:

class Dog { }
class Cat { }

Dog dog = new Dog();
Cat cat = dog as Cat; // error: CS0039 Cannot convert type 'Dog' to 'Cat'

Тут, вроде, все логично: при кастовании смотрим - является ли тип кастуемого экземпляра дочерним от типа, к которому кастуем; или является ли тип кастуемого экземпляра родительским от типа, к которому кастуем. Если одно из условий верно, то ошибок во время компиляции возникать не должно.

Читать полностью »

Всем привет, эта статья создана для ребят, которые знакомы с делегатами, но хотели бы разобраться, что это поподробнее.

Что же такое делегаты?

Делегаты - это указатели на методы

Такое понятие нам дает практически каждый сайт, на который мы перейдем по запросу "Делегаты C#".

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

Сами методы хранятся в метаданных класса/структуры. "ссылки на методы" для делегатов хранятся в хипе. Но только лишь ссылка на метод храниться в хипе у делегата или что - то еще? Давайте проверим

Читать полностью »

Введение

Пару лет назад для .NET в Linux не было не то чтобы production-ready фреймворков для создания native desktop приложений, но и экспериментальных. На тот момент существовали Uno Platform и Avalonia (тогда еще бета). Они запускались, работали, но написать реальное и относительно сложное приложение было практически нереально. Сегодня ситуация значительно лучше. Avalonia уже вполне production-ready продукт и является, на мой взгляд, лидером среди desktop фреймворков на .NET для Linux.

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

Читать полностью »

Каждый разработчик часто сталкивается с написанием большого объема рутинного и повторяющегося кода, который имеет один и тот же смысл. Начиная с C# версии 9 появилась возможность генерации кода, которая интегрирована напрямую с компилятором. Такой подход позволяет избавиться от множества строк шаблонного кода. О нём сегодня и поговорим.

В современном мире анализа данных регрессионный анализ занимает центральное место, предоставляя мощные инструменты для выявления и количественной оценки взаимосвязей между переменными. Он позволяет исследователям и аналитикам не только описывать существующие зависимости, но и прогнозировать поведение систем на основе имеющихся данных. Одним из наиболее распространенных методов регрессионного анализа является метод наименьших квадратов, который стремится минимизировать сумму квадратов отклонений между наблюдаемыми и предсказанными значениями.

Читать полностью »

Данная статья затрагивает некоторые аспекты при выборе подхода к проектированию предметной области для сложных корпоративных систем. В ней исследуются причины возникновения классических подходов и их анализ, для возможного улучшения. Это моя первая статья на данную тему.

Читать полностью »

Раньше, что бы лучше освоить язык программирования, в моем кругу общения считалось, что «программист» должен написать свою реализацию «Блокнота», «Калькулятора», «Экселя» и прочего. Конечно освоив перед этим сортировку пузырьком.

Шли года, менялись задачи. Менялась мода на технологическое направление в IT: разработчик баз данных, web разработка, мобильная разработка, Data майнинг, и вот теперь великий и могучий искусственный интеллект (ИИ). А там где мода — там есть деньги. Ну вы поняли.

Признаюсь, у меня было много попыток войти в айтиЧитать полностью »

FluentValidation — это мощная библиотека для валидации объектов в .NET, которая поддерживает создание кастомных сообщений об ошибках. В этом руководстве мы рассмотрим, как использовать различные подходы к формированию этих сообщений и почему важно различать использование простых строк и лямбда-выражений в методе WithMessage.

Простой вывод сообщения об ошибке

Когда вы используете метод WithMessage и передаете строку напрямую:

RuleFor(customer => customer.FirstName)
    .NotNull()
    .WithMessage("Это сообщение об ошибке.");

Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js