Обновить
88.77

C# *

Объектно-ориентированный язык программирования

Сначала показывать
Порог рейтинга
Уровень сложности

Сравнение строк в C# (по умолчанию)

Время на прочтение10 мин
Охват и читатели58K
Часто бывает, что мы соединяем 2 коллекции или группируем коллекцию при помощи LINQ to Objects. При этом происходит сравнение ключей, выбранных для группировки или связывания.
К счастью, стоимость этих операций равна O(n). Но в случае больших коллекций нам важна эффективность самого сравнения. Если в качестве ключей выбраны строки, то какая из реализаций сравнения будет использована по умолчанию, подходит ли эта реализация для ваших строк и можно ли, указав IEqualityComparer<string> явно, сделать эту операцию быстрее?
clients.Join(orders, 
                   c => c.Name, 
                   o => o.ClientName, 
                   (c, o) => CreateOrederDto(c, o));

Как же выбирается реализация компаратора, если пользователь не указал её явно?
Пороемся в исходном коде coreclr

Полное руководство по использованию ASP.NET Core 1.0 (aka ASP.NET 5) Tag Helpers

Время на прочтение22 мин
Охват и читатели37K
Тег-хэлперы (Tag Helpers) – новая функция MVC, которую удобно использовать для генерации HTML кода. Они выглядят как обычные HTML элементы и атрибуты, но обрабатываются движком Razor на стороне сервера. Тег-хэлперы во многом представляют собой альтернативный синтаксис для HTML Helpers, но также они позволяют сделать то, что было трудно или невозможно сделать с помощью HTML Helpers. У каждого тег-хэлпера свое поведение и возможности. Эта статья рассмотрит базовые тег-хэлперы, существующие в MVC 6 (ASP .NET Core 1.0, как стало известно совсем недавно).
Читать дальше →

Using или Using?

Время на прочтение1 мин
Охват и читатели18K
Заголовок этого сообщения обескураживает, не правда ли? Тем не менее, вы достаточно сообразительны, чтобы догадаться, о чем пойдет речь. На собеседовании по .NET часто задают вопрос: ”Чем отличаются директива using и оператор using?” Иногда перед соискателем ставят дополнительные ловушки, спрашивая, в каких местах программы можно использовать using? Первое, что приходит в голову, это использование директивы using, которая применяется для определения или разрешения использования типов как пространств имен. Например, следующий фрагмент кода демонстрирует включение некоторых пространств имен с помощью директивы using.
Читать дальше →

Процедурно генерируемые карты мира на Unity C#, часть 2

Время на прочтение7 мин
Охват и читатели24K
image

Это вторая статья из цикла о процедурно генерируемых с помощью Unity и C# картах мира. Цикл будет состоять из четырех статей.
Читать дальше →

Процедурно генерируемые карты мира на Unity C#, часть 1

Время на прочтение5 мин
Охват и читатели78K
image

В этом цикле статей мы научимся создавать процедурно генерируемые карты мира с помощью Unity и C#. Цикл будет состоять из четырех статей.
Читать дальше →

Проверяем исходный код набора C#/.NET компонентов от Sony

Время на прочтение9 мин
Охват и читатели12K

Как некоторые из вас помнят — недавно мы выпустили версию анализатора, поддерживающую проверку C#-кода. С появлением возможности анализа проверки проектов, написанных на C#, открывается новый простор для творчества. Об анализе одного из таких проектов, разработанного компанией Sony Computer Entertainment (SCEI), и пойдёт речь в данной статье.
Читать дальше →

Работа с Arduino из C# приложения

Время на прочтение7 мин
Охват и читатели96K

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

Делать это можно без использования сторонних библиотек. Фактически, используя только виртуальный COM порт.
Читать дальше →

Как использовать БД SQL в студенческом Microsoft AZURE от Dreamspark

Время на прочтение4 мин
Охват и читатели8.8K


Привет хаброжители!
Многие из вас слышали или читали что в Dreamspark для студентов специально добавили Microsoft Azure, чтобы у студентов появился бесплатный хостинг для их учебных проектов. Небольшой спойлер: бесплатно и без рекламы!
Читать дальше →

Entity vs Value Object: полный список отличий

Время на прочтение6 мин
Охват и читатели75K
Тема отличий таких понятий как Entity (Сущность) и Value Object (Объект-Значение) из Domain-Driven Design не нова. Тем не менее, я не смог найти статью с полным списком их отличий, так что решил написать свою.
Читать дальше →

BindableConverter для WPF

Время на прочтение4 мин
Охват и читатели5.5K
Проблема: WPF классная технология, но местами недоработанная. Например, вот такой код выплюнет не помню точно какой Exception, поскольку ConverterParameter не является наследником DependencyObject'a:

<...Text={Binding SourceProperty, Converter={StaticResource SomethingToSomethingElseConverter} ConverterParameter={Binding AnotherSourceProperty}} />

Собственно, это и проблема. А ниже ее решение.
Читать дальше →

Простой пул объектов в Unity3D

Время на прочтение7 мин
Охват и читатели50K
В процессе разработки я столкнулся с необходимостью создания пула объектов. Прочитав эту и другие статьи, решил написать для своих нужд пул попроще с доступом к объекту по строке (названию префаба).

Итак, начнем. Пул состоит из четырех скриптов. Состояние вкл/выкл на объекте в пуле определяется его свойством Unity activeInHierarchy, чтобы не городить дополнительных переменных.
Читать дальше →

Кроссплатформенный IDE для .NET/C# от JetBrains

Время на прочтение1 мин
Охват и читатели62K
Сегодня анонсирован новый продукт от JetBrains на платформе IntelliJ. Кодовое имя прокта — Project Rider. Сообщается, что IDE содержит большое количество фич, соответствующих возможностям ReSharper.



Для своей работы IDE использует Resharper, который запускается в отдельном процессе, и служит в качестве бэкенда для редактора кода. IDE поддерживает .NET Framework, Mono и DNX/CoreCLR, и работает на платформах Windows, Mac OS X и Linux. Сообщается, что выход данного продукта связан в том числе и с движением Microsoft в сторону Open Source, а также, с растущей популярностью альтернативных платформ в мире .NET.

Предполагаемая дата релиза — осень 2016 года, но пользователи получат возможность протестировать продукт раньше, воспользовавшись Early Access Program.

Альтернативный Sound Manager для мелких и средних проектов на Unity3D

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

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

Ближайшие события

Проверяем IronPython и IronRuby с помощью PVS-Studio

Время на прочтение9 мин
Охват и читатели8K
Совсем недавно мы выпустили новую версию нашего анализатора PVS-Studio с поддержкой проверки C# проектов. Пока на время релиза дальнейшая разработка продукта была приостановлена, я занимался тестированием анализатора. В качестве проектов для своих экспериментов я взял IronPython и IronRuby. А раз эти проекты были проверены, я решил написать небольшую статью-отчёт.



IronPython и IronRuby


IronPython и IronRuby представляют собой реализацию языков программирования Python и Ruby на платформе .NET. Исходный код этих проектов доступен на GitHub по этой ссылке. Также в комплекте идёт исходный код DLR. Начиная с .NET Framework 4.0 DLR является его частью, и IronPython и IronRuby используют её. Тем не менее я всё равно проверил старую версию DLR, раз уж она там оказалась.
Подробности

Доступны записи докладов Community DevCamp

Время на прочтение1 мин
Охват и читатели5.3K
Стали доступны записи докладов Community DevCamp – мероприятия для разработчиков от разработчиков.Основные докладчики — признанные эксперты сообщества, которые расскали о том, как они видят, используют или планируют использовать самые последние новинки для разработчиков на .NET — .NET Native, Roslyn, кросс-платформенную разработку на ASP.NET, контейнеры Docker, Azure Service Fabric, F# — и многое другое.

Записи всех докладов доступны по ссылке:
channel9.msdn.com/Events/Community-Dev-Camp/Community-Dev-Camp-2015-Moscow

Мероприятие проводилось при поддержке сообщества MVP.
Записи докладов с возможностью просмотра

Полезные дополнения к ReSharper

Время на прочтение3 мин
Охват и читатели18K


Всем привет!

Как я заметил, немало людей использует ReSharper, однако полностью игнорируют его расширения (плагины). В этой статье я опишу те из них, которые показались мне полезными.
Названия расширений кликабельны и ведут на их детальное описание.
Читать про плагины

Расчет биномиальных коэффициентов с использованием Фурье-преобразований

Время на прочтение4 мин
Охват и читатели23K
При решении задач комбинаторики часто возникает необходимость в расчете биномиальных коэффициентов. Бином Ньютона, т.е. разложение image также использует биномиальные коэффициенты. Для их расчета можно использовать формулу, выражающую биномиальный коэффициент через факториалы: image или использовать рекуррентную формулу:image Из бинома Ньютона и рекуррентной формулы ясно, что биномиальные коэффициенты — целые числа.

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

Наличие большого числа библиотек, реализующих Фурье преобразований (во всевозможных вариантах быстрых версий), делает реализацию алгоритмов не очень сложной задачей для программирования.
Реализованные алгоритмы являются частью библиотеки с открытым исходным кодом FFTTools. Интернет-адрес: github.com/dprotopopov/FFTTools
Читать дальше →

Низкоуровневая оптимизация параллельных алгоритмов или SIMD в .NET

Время на прочтение12 мин
Охват и читатели49K
image

В настоящее время огромное количество задач требует большой производительности систем. Бесконечно увеличивать количество транзисторов на кристалле процессора не позволяют физические ограничения. Геометрические размеры транзисторов нельзя физически уменьшать, так как при превышении возможно допустимых размеров начинают проявляться явления, которые не заметны при больших размерах активных элементов — начинают сильно сказываться квантовые размерные эффекты. Транзисторы начинают работать не как транзисторы.
А закон Мура здесь ни при чем. Это был и остается законом стоимости, а увеличение количества транзисторов на кристалле — это скорее следствие из закона. Таким образом, для того, чтобы увеличивать мощность компьютерных систем приходится искать другие способы. Это использование мультипроцессоров, мультикомпьютеров. Такой подход характеризуется большим количеством процессорных элементов, что приводит к независимому исполнение подзадач на каждом вычислительном устройстве.
Читать дальше

Локализация WPF-приложения и мгновенная смена культуры

Время на прочтение8 мин
Охват и читатели17K
Существуют разные способы локализации WPF-приложения. Самый простой и распространенный вариант — использование файла ресурсов Resx и автоматически сгенерированный к ним Designer-класс. Но этот способ не позволяет менять значения «на лету» при смене языка. Для этого необходимо открыть окно повторно, либо перезапустить приложение.
В этой статье я покажу вариант локализации WPF-приложения с мгновенной сменой культуры.
Читать дальше →

Ищем ошибки в MonoDevelop

Время на прочтение18 мин
Охват и читатели12K

В жизни анализатора PVS-Studio состоялось важное событие — в последней версии была добавлена возможность проверки кода, написанного на C#. Являясь одним из разработчиков данного анализатора, я просто не мог пройти мимо, не проверив какой-нибудь проект. Понятно, что мало кому будет интересно читать про проверку маленьких и неизвестных проектов, поэтому нужно было выбрать что-то известное, и выбор пал на MonoDevelop.
Читать дальше →

Вклад авторов