C#Интерфейсы

Интерфейсы в C# исполняют роль соглашений.

В терминологии программирования интерфейс похож на класс, за исключением того, что ни один из его членов не реализован. Интерфейс группирует методы, свойства, события и индексаторы. Для него нельзя создать экземпляр: все что он содержит, — сигнатуры своих членов, причем таковыми могут быть только указанные четыре типа членов.

Интерфейс не имеет конструкторов и полей. Интерфейс не может иметь перегруженных операций.

Интерфейс объявляется практически также как класс, за исключением того, что его члены не имеют реализации (наподобие абстрактных методов). Отсутствие реализации и модификаторов доступа.

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

C#Индексаторы

Индексаторы позволяют получить доступ к объекту, как будто это массив. Если определить для класса индексатор, это укажет компилятору, что делать если он встретит код, в котором экземпляр класса рассматривается так, как будто это массив.

Индексаторы определяются примерно также как и свойства (с использованием get и set). Основное отличие – что в качестве имени индексатора используется ключевое слово this.

Строка public double this[int i] говорит, что мы хотим рассматривать каждый экземпляр класса (структуры) Vector как одномерный массив с int в качестве индекса и что тип возвращаемого значения double.

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

C#Структуры

Структуры имеют те же самые ограничения на время жизни, что и простые переменные типы данных. Структуры не поддерживают наследование.

Оператор new для структур действует иначе, нежели для классов и других типов по ссылке, вместо выделения памяти в куче оператор new для структуры вызывает конструктор по умолчанию, который инициализирует все поля своими значениями (заменить его не представляется возможным).

Для структуры можно определить конструктор, но только с параметрами. Нельзя определить конструктор не принимающий параметров. Для структур можно определить методы Dispose() и Close(), однако деструктор Finalize() не поддерживается.

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

C#Запись и чтение из файла

Работа с файлами. Побайтовое чтение/запись. Чтение текстовых данных

Любой ввод и вывод информации в .Net Framework включает в себя использование потоков.

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

В пространстве имен System.IO хранятся классы, предназначенные для считывания и записи данных в файлы. Классы:

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