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

Булевские операции

Некоторые типы могут принимать участие в булевских выражениях проверки, таких как встречающиеся внутри скобок блока i f или внутри тернарной операции ? :. Чтобы это работало, имеются две альтернативы. Первая заключается в том, что можно реализовать две операции преобразования, известные как operator true и operator false. Они должны быть реализованы в паре, чтобы позволить комплексному […]

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

Семафоры

В .NET Framework семафоры поддерживаются с помощью класса System.Threading.Semaphore. Они служат для того, чтобы обеспечить возможность для определенного числа потоков одновременно использовать ресурсы. Всякий раз, когда поток обращается к семафору через WaitOne (или любой другой из методов Wait. . . класса WaitHandle, которые описаны ниже), счетчик семафора декрементируется.

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

Применение неуправляемого кода

По умолчанию приложения на C# относятся к управляемому коду. Но при необходимости управляемый код может взаимодействовать с неуправляемым кодом. К неуправляемому коду, вызываемому из управляемых C# приложений, можно отнести функции DLL-библиотек и сервисы COM-компонентов. Приложение управляемого кода также может включать фрагменты небезопасного кода. Небезопасный код тоже относится к неуправляемому коду, так как выделение и освобождение […]

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

Преобразование обобщенного типа

Как уже упоминалось ранее, неявных преобразований разных конструируемых типов, сформированных из одного обобщенного типа, не существует. Те же правила, которые действуют при определении того, является ли объект типа X преобразуемым в объект типа Y, в равной мере касаются определения возможности преобразования объекта типа List в объект типа

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

Конструкторы в C#

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

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

Легковесная синхронизация с помощью класса Interlocked

Те из вас, кто пришел из неуправляемого мира программирования на Win32 API, вероятно, знают о существовании семейства функций Interlocked. . . К счастью, эти функции предоставлены в распоряжение разработчиков С# через статические методы класса Interlocked из пространства имен System.Threading.

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

Обобщенные методы

С# поддерживает обобщенные методы. Любое объявление метода внутри структуры, класса или интерфейса может быть сделано обобщенным. Сюда входят статические и виртуальные или абстрактные методы. К тому же в обобщенных или необобщенных типах можно объявлять обобщенные методы.

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

Переопределение реализаций интерфейсов в производных классах

Предположим, что у вас есть удобная реализация ComboBox, как в предыдущем разделе, и разработчик решил не герметизировать этот класс, чтобы вы могли наследоваться от него. Я советую вам объявлять все свои классы как sealed, если только вы явно не собираетесь наследоваться от них.

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

C# – IEnumerable, IEnumerator, IEnumerable и IEnumerator

Ранее уже было показано, как использовать оператор foreach для удобного выполнения итерации по коллекции объектов, включая System.Array, ArrayList, List и т.п. Как это функционирует? Каждая коллекция, которая должна работать с foreach, должна реализовать интерфейс IEnumerable или IEnumerable. Этот интерфейс используется foreach для получения объекта, знающего, как перечислить, или выполнить итерацию, по элементам коллекции.

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

Локальное хранилище потока в С#

В управляемом окружении можно создавать локальное хранилище потока (thread-local storage — TLS). В зависимости от приложения, может понадобиться иметь статическое поле класса, уникальное для каждого потока, в котором используется класс. В большинстве случаев на С# сделать это очень просто.

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