Пространство имен.System.Collections

Пространство имен — это просто способ организации типов (классов, перечислений, интерфейсов, делегатов и структур) в единую группу. System. Collections - Для работы с контейнерными объектами, такими как ArrayList, Queue, SortedUst.

Класс ArrayList

Основным недостатком обычных массивов является то, что объем памяти, обходимый для хранения их элементов, должен быть выделен до начала работы с массивом. Класс ArrayList позволяет программисту не заботиться о выделении памяти и хранить в одном и том же массиве элементы различных типов.

34. Принципы ООП в С#. Наследование

Пространство имен.System.Collections - student2.ru

Пространство имен.System.Collections - student2.ru

Пространство имен.System.Collections - student2.ru

Пространство имен.System.Collections - student2.ru

Пространство имен.System.Collections - student2.ru

Пространство имен.System.Collections - student2.ru

35. Принципы ООП в С#. Полиморфизм

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

36. Принцыпы ООП в C#. Инкапусаляция.

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

class NoEncapsulation

{ public double Value;

public string ValueString; }

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

class EncapsulationExample

{

private double valueDouble;

private string valueString;

public double Value

{

get { return valueDouble; }

set

{

valueDouble = value;

valueString = value.ToString();

} }

public string ValueString

{ get { return valueString; }

set {double tmp_value = Convert.ToDouble(value); valueDouble = tmp_value;

valueString = value;

} } }

Здесь доступ к переменным valueDouble и valueString возможен только через свойства Value и ValueString. Если мы попытаемся присвоить свойству ValueString некорректную строку и возникнет исключение в момент конвертации, то внутренние переменные останутся в прежнем, согласованном состоянии, поскольку исключение вызывает выход из процедуры.

Делегаты.

Делегат — это вид класса, предназначенный для хранения ссылок на методы. Делегат, как и любой другой класс, можно передать в качестве параметра, а затем вызвать инкапсулированный в нем метод. Делегаты используются для поддержки событий, а также как самостоятельная конструкция языка. Рассмотрим сначала второй случай. Описание делегата задает сигнатуру методов, которые могут быть вызваны с его помощью: [ атрибуты ] [ спецификаторы ] delegate тип имяделегата ( [ параметры ] )

Спецификаторы делегата имеют тот же смысл, что и для класса, причем допуска ются только спецификаторы new, public, protected, internal и private. Тип описывает возвращаемое значение методов, вызываемых с помощью делегата, а необязательными параметрами делегата являются параметры этих методов. Делегат может хранить ссылки на несколько методов и вызывать их поочередно естественно, что сигнатуры всех методов должны совпадать.

Пример описания делегата: public delegate void D ( int i );

Здесь описан тип делегата, который может хранить ссылки на методы, возвращающие void и принимающие один параметр целого типа. Объявление делегата можно размещать непосредственно в пространстве именили внутри класса.

Наши рекомендации