Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Obektno-orientirovannoe_programmirovanie.doc
Скачиваний:
14
Добавлен:
19.08.2019
Размер:
271.36 Кб
Скачать

12. Использование ключевого слова this в c#.

Каждый объект сопровождается указателем на самого себя — называемым указателем this – это неявный аргумент во всех ссылках на элементы внутри этого объекта. Указатель this можно использовать также и явно. Каждый объект может опре­делить свой собственный адрес с помощью ключевого слова this. Указатель this неявно используется для ссылки как на данные-элементы, так и на функции-элементы объекта. Тип указателя this зависит от типа объекта и от того, объявлена ли функция-элемент, в которой используется this, как const. Указатель this передается как скрытый аргумент при вызове нестатич. ф-ций. Ключевое слово this представляет собой локальную переменную, доступную в теле нестатич. функц-ком-та. Элемент this не требует объявления, явная ссылка на него не явл. ошибкой.

Каждая функция-элемент имеет доступ к указателю this на объект, для которого вызван этот элемент. Одним интересным применением указателя this является предотвращение присваивания объекта самому себе. Другим применением указателя this является возможность сцепленных вызовов функций элементов.

Синтаксис C# допускает, чтобы имя параметра или локальной переменной совпадало с именем переменной экземпляра. И тогда доступ к скрытой переменной экземпляра можно получить с помощью ссылки this.

13. Передача параметров методов в c#

Методы в С# используют параметры для передачи значений, для возвращения результата или для обеих этих целей одновременно. Для обозначения направления передачи используются модификаторы – ключевые слова, стоящие перед описанием параметров.

  1. нет модификатора – входной параметр, он передается как значение;

  2. Out – выходной параметр, возвращающий значение из метода;

  3. Ref – передача параметра по ссылке. Исходное значение присваивается вызывающему методу, но оно может м.б. изменено вызванным;

  4. params – обозначает набор параметров. Такой параметр м.б. только один и в списке параметров должен идти последним. Для каждого параметра указывается его тип и имя.

Int x,y – неверно

Int x, int y – верно

При вызове метода в C# следует указывать модификаторы параметров.

Public void Set (out int x)

{

-x = 12;

}

Входные параметры и параметры пол ссылке д.б. инициализированы вызываемым методом. Выходной параметр инициализировать необязательно.

int y;

O.Set (out y);

14. Структурные (value-based) и ссылочные (reference-based) типы.

В C# каждый доступный тип является классом. У всех есть один общий предок – класс System.Object или просто Object. К структуре относятся все типы, произведенные от класса System.ValueType, который в свою очередь является прямым наследником класса System.Object. К структурным относятся все числовые типы данных (int, float), все структуры и все перечисления.

Особенности структурных типов данных:

  1. память выделяется в стеке;

  2. во время присваивания создается побитовая копия в новом участке памяти;

  3. данные типы не могут выступать в качестве базовых (от них наследовать нельзя);

  4. при передаче параметра такого типа создается его побитовая копия (в стеке);

  5. для структурных типов нельзя определить конструктор по умолчанию самостоятельно. Он в любом случае создается системой и присваивает всем полям значения по умолчанию;

  6. пользовательские структурные типы данных создаются с помощью ключевого слова struct. В остальном их описание аналогично описанию классов.

Объекты структур также, как и объекты классов м.б. созданы с помощью ключевого слова new. Но структуры можно создавать не используя этот оператор. Если объект структуры создается без использования new, то поля будут не инициализированы. Сами структуры могут наследоваться только от интерфейса, а не от классов или других структур. Использование структур эффективно для представления небольших объектов (< 16 байт). Уничтожение переменной структурного типа происходит при выходе из области видимости.

К ссылочным типам относятся классы и интерфейс. Особенности ссылочных типов: 1) память выделяется в куче (управляемая куча managed heap). В стеке хранится ссылка на эту область;

2) во время присваивания создается еще одна ссылка на туже самую область;

3) при передаче параметра передается только ссылка на него. Конструктор по умолчанию м.б. переопределен. Объект создается только с помощью new. Другим способом выделить новую память невозможно. Уничтожение объекта происходит во время сборки мусора garbage collection.