background preloader

C#

Facebook Twitter

Вся правда о TypeHandle в .NET. В разных умных книжках и статьях про .NET я часто наталкивался на упоминания про TypeHandle.

Вся правда о TypeHandle в .NET

Чаще всего пишут, что у каждого .NET-объекта в заголовке находится некоторый TypeHandle, который представляет собой ссылку на тип. Ещё пишут, что TypeHandle — это всегда указатель на таблицу методов типа. А в некоторых местах мне доводилось встречать информацию о том, что TypeHandle указывает на некий TypeDesc. В общем, я устал от неразберихи: давайте вместе разберёмся что к чему. А для этого нам придётся немного подизассемблировать, поизучать дампы памяти и залезть в исходники CLI. Неочевидности в использовании C#-замыканий. Язык C# даёт нам возможность пользоваться замыканиями — мощным механизмом, который позволяет анонимным методам и лямбдам захватывать свободные переменные в своём лексическом контексте.

Неочевидности в использовании C#-замыканий

И в .NET-мире многие программисты очень любят использовать замыкания, но немногие понимают, как они действительно работают. Начнём с простого примера: public void Run() { int e = 1; Foo(x => x + e); } Ничего сложного тут не происходит: мы просто «захватили» локальную переменную e в лямбду, которая передаётся в некоторый метод Foo. Посмотрим, во что компилятор развернёт такую конструкцию: public void Run() { DisplayClass c = new DisplayClass(); c.e = 1; Foo(c.Action); } private sealed class DisplayClass { public int e; public int Action(int x) { return x + e; } } Как видно из примера, для нашего замыкания создаётся дополнительный класс, который содержит захватываемую переменную и целевой метод.

Цикл for Наверное, это самый классический пример, который приводят все: Introduction · ProblemBook.NET. Учимся округлять в C# А знаете ли вы, что Math.Round(1.5) == Math.Round(2.5) == 2?

Учимся округлять в C#

Можете ли сходу сказать, сколько будет -7%3 и 7%-3? Помните ли, чем отличаются Math.Round, Math.Floor, Math.Ceiling, Math.Truncate? Невероятные приключения в коде – Перевод блога Эрика Липперта. В прошлый раз мы обсуждали, как параметр «dynamic» стремится расшириться по программе подобно вирусу: если выражение типа dynamic «касается» другого выражения, то последнее зачастую тоже становится типа dynamic.

Невероятные приключения в коде – Перевод блога Эрика Липперта

Сегодня я хочу остановиться на менее всего понимаемом аспекте вывода типа метода, который также применяет модель заражения, когда в игру вступает параметр «dynamic». Постоянные читатели знают, что… Предположим, что вы эпидемиолог, моделирующий возможное распространение сильно заразной болезни. Прямой способ моделирования серии прискорбных событий – предположить, что население может быть разделено на три категории: определенно зараженных, определенно здоровых и возможно зараженных. Если здоровый встречается с зараженным или возможно зараженным, то он переходит в категорию возможно зараженных. Сегодняшний пост, как обычно будет представлен в виде диалога.

Я все пропустил! Я рад сообщить, что выпустили третий ознакомительный выпуск («Community Technology Preview») проекта Roslyn. C#. Учимся работать с MySQL. В этой статье мы рассмотрим взаимодействие с популярной СУБД «MySQL» из приложения на C#.

C#. Учимся работать с MySQL

К сожалению, в самом C# нет компонентов или классов для работы с MySQL, поэтому нам придется обратиться к общедоступному классу MySqlLib. Что мы будем делать В статье я не буду грузить теорией, а рассмотрю типичные операции (выборка, добавление, удаление, обновление), возникающие при работе с БД. Все эти операции я буду рассматривать на примере конкретного приложения. Как правило, для знакомства с БД пишут свой телефонный справочник (прим. редактора – да, все мы с этого начинаем). Схема БД Для начала нам надо создать саму БД, с которой потом будем работать из своего приложения. C# Работа с MySql. Подключение, запросы. Сегодня мы поговорим о MySql.

C# Работа с MySql. Подключение, запросы

СУБД, которую поддерживает почти любой хостер. А конкретно о том, как подключиться к подобной базе данных и работать с ней. Для начала нужно скачать официальный коннектор для работы с базами данных MySql на платформе .NET. Для этого переходим по этой ссылке. Начинаем установку. Теперь, когда всё установлено, нам нужно подключить библиотеку к проекту. После чего можно объявить: Программа минимум: то, что должен знать любой начинающий C#-программист. Рассказывает Мош Хамедани, автор курсов по C# на udemy Мои студенты на Udemy часто задают мне вопросы такого рода:

Программа минимум: то, что должен знать любой начинающий C#-программист

Wall. C# 5.0 и платформа .NET 4.5. C# и .NET --- C# 5.0 и платформа .NET 4.5 Ниже представлены разделы, которые входят в данную тему: Руководство по C# - Часть 1 В данном разделе описываются базовые понятия и возможности языка C#, например, такие как условные и арифметические операторы, циклы, операторы перехода, массивы, строки и т.д.

C# 5.0 и платформа .NET 4.5

Здесь раскрывается объектно-ориентированная природа C#, подробно разбираются классы и их функции-члены (методы, конструкторы, деструкторы, свойства и индексаторы). Так же вы найдете подробное описание перегрузок функций-членов класса. Руководство по C# - Часть 2 Подробно описаны интерфейсы, делегаты, события и лямбда-выражения. Введение. Последнее обновление: 31.10.2015 На сегодняшний момент язык программирования C# один из самых мощных, быстро развивающихся и востребованных языков в ИТ-отрасли.

Введение

В настоящий момент на нем пишутся самые различные приложения: от небольших десктопных программок до крупных веб-порталов и веб-сервисов, обслуживающих ежедневно миллионы пользователей. Введение в ООП с примерами на C#. Часть четвёртая. Абстрактные классы. Рассказывает Akhil Mittal.

Введение в ООП с примерами на C#. Часть четвёртая. Абстрактные классы