C#Операторы

Операции (sizeof, *, ->, &) доступны только в небезопасном коде.
Тернарный оператор: условие ? истина : ложь

Console.WriteLine( x>=0 ? “да” : “нет”);

Операторы checked и unchecked позволяют указать, как CLR будет обрабатывать переполнение стека в при выполнении тех операций над целочисленными типами, которые приводят к выходу значения результата за границы допустимых значений для конкретного типа данных.

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

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

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

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

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

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

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

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

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

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

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

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

C#Структуры

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

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

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

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