Посты для тега : ‘public’

Именованные аргументы

— новое средство, которое появилось в С# 4.0. В действительности оно дополняет необязательные аргументы. Рассмотрим пример класса TeamMember, приведенный в предыдущем разделе. Предположим, что необходимо создать экземпляр TeamMember, приняв все аргументы конструктора по умолчанию за исключением isFullTime.

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

Шаблон Strategy

Делегаты представляют собой удобный механизм для реализации шаблона Strategy (Стратегия). В основе своей шаблон Strategy позволяет динамически заменять вычислительные алгоритмы в зависимости от ситуации, сложившейся во время выполнения. Например, рассмотрим распространенный случай сортировки группы элементов. Предположим, что требуется максимально быстрое выполнение сортировки.

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

Инкапсуляция в C#

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

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

Ограничения

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

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

Когда происходит упаковка в C#

Поскольку С# обрабатывает упаковку неявно, важно знать случаи, когда С# упаковывает значение. В основном значение упаковывается во время выполнения следующих преобразований: • преобразование типа значения в объектную ссылку; • преобразование типа значения в ссылку на System.ValueType;

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

Интерфейсы определяют типы

Объявление интерфейса определяет ссылочный тип. В переменных этого типа можно хранить ссылки на объект, располагающийся в куче и удаляемый сборщиком мусора, который реализует контракт типа интерфейса. Каждая переменная в CLR хранится в определенном месте памяти, будь то куча или стек. Каждое место хранения имеет ассоциированный с ним тип. Когда переменная, скажем, ссылка на объект, находится […]

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

События

Во многих случаях использования делегатов в качестве механизма обратного вызова может понадобиться просто известить кого-то о наступлении некоторого события вроде щелчка на кнопке в пользовательском интерфейсе. Предположим, что проектируется приложение медиа-проигрывателя. Где-то в пользовательском интерфейсе имеется кнопка “Play” (Воспроизведение).

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

Анонимные типы

Насколько часто у вас возникала потребность в легковесном классе, хранящем несколько взаимосвязанных значений для использования внутри определенного метода, и вы стонали от необходимости вводить целое определение типа, с приватными полями и общедоступными свойствами? Так обратитесь к анонимным типам!

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

Обобщения и наследование

Обобщенные типы С# не могут напрямую наследоваться от параметра типа. Однако можно использовать следующие параметры типа для конструирования базовых типов, которые они могут наследовать: 1 2 3 4 5 6 7 8

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

Многопоточность в С#

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

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