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

Обобщенные делегаты

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

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

Имеет ли значение порядок параметров?

Предположим, что создается структура для представления простых комплексных чисел, скажем, Complex, и требуется складывать вместе экземпляры Complex. Было бы также удобно иметь возможность прибавлять простые значения double к экземпляру Complex. Добавление такой функциональности — не проблема, поскольку можно перегрузить метод операции + так, чтобы один параметр был Complex, а другой — double. Это объявление может […]

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

Сравнение делегирования и композиции с наследованием

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

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

Типы и форматы перегруженных операций

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

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

Примеры строкового форматирования в пользовательских типах

Давайте рассмотрим другой пример использования знаменитого типа Complex. На этот раз попробуем реализовать IFormattable, чтобы сделать его несколько более удобным для генерации строковой версии экземпляра. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 […]

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

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

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

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

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

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

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

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

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

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

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

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

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

Методы new и override

Чтобы переопределить метод в производном классе, этот метод должен быть снабжен модификатором override. Если этого не сделать, то компилятор предупредит о необходимости указания в объявлении производного метода либо модификатора new, либо модификатора override. По умолчанию компилятор подразумевает использование модификатора new, что, вероятно, даст эффект, противоположный тому, что можно было ожидать.

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