Архив для категории: ‘C#’

Герметизированные классы в C#

Иногда имеются намерения сделать создаваемый новый класс базовым классом — заготовкой для дальнейшей специализации. Однако часто бывает и так, что классы проектируются, не принимая во внимание то, будут они использоваться в качестве базовых или нет. На самом деле весьма вероятно, что класс, который проектируется сегодня, будет использован в качестве базового завтра, даже если это не […]

Читать далее »

Явная реализация интерфейса с помощью типа значений

Интерфейсы общего применения, принимающие параметры в форме ссылки на System.Object, встречаются очень часто. Такие интерфейсы обычно являются широко используемыми, не обобщенными интерфейсами. Например, вот как выглядит интерфейс IComaparable:

Читать далее »

Необязательные аргументы

Проектировщики С# всегда учитывали список запросов пользователей при разработке новой версии языка. С годами необязательные аргументы методов переместились на вершину этого списка. Но до появления С# 4.0 не было достаточно веских причин для их добавления к языку.

Читать далее »

Обобщения в C#

Поддержка обобщений (generics) — одно из наиболее впечатляющих нововведений в языке С#. С помощью синтаксиса обобщений можно определить тип, зависящий от другого типа, который не специфицирован в точке определения, а вместо этого определен в точке использования обобщенного типа.

Читать далее »

Определения обобщенных типов и конструируемые типы

Как упоминалось ранее, обобщенный тип — это скомпилированный тип, который не используется до тех пор, пока из него не будет создан закрытый тип. Необобщенный тип также известен как закрытый таги а обобщенный тип называют открытым типом. Можно определить новый открытый тип через обобщенный, как показано в следующем примере:

Читать далее »

Неявно типизированные массивы

В С# 3.0 появился сокращенный способ инициализации массивов, когда конкретный тип массива может быть выведен во время выполнения. Взглянем на новый синтаксис на примере следующего фрагмента кода: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

Читать далее »

Поиск строк с помощью регулярных выражений

Тип System.String сам по себе предлагает некоторые рудиментарные методы поиска вроде IndexOf, IndexOfAny, LastlndexOf, LastlndexOfAny и StartsWith. С помощью этих методов можно определить, содержит ли строка определенную подстроку, и где именно.

Читать далее »

Методы Interlocked на SMP-системах

На симметричных многопроцессорных системах Intel (SMP) простое чтение и запись элементов памяти встроенного размера синхронизируются автоматически. В системе IA-32 чтение и запись свойств, выровненных по 32-битным значениям, синхронизированы. Поэтому в предыдущем примере, где было показано применение Interlocked.CompareExchange для простого чтения значения int32, вызов этого метода был бы не обязательным, если переменная правильно выровнена в памяти.

Читать далее »

Создание объектов

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

Читать далее »

Доступность в C#

Ранее модификаторы доступа уже несколько раз упоминались. При наличии опыта работы с любым другим объектно-ориентированным языком программирования вроде С++ или Java их применение может выглядеть интуитивно понятным. Однако некото­рые нюансы доступа к членам в С# и CLI также заслуживают упоминания. Прежде чем рассматривать различные типы модификаторов, давайте немного поговорим о том, где их можно применять.

Читать далее »
 
Rambler's Top100