Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпоры C#.doc
Скачиваний:
16
Добавлен:
22.09.2019
Размер:
472.58 Кб
Скачать

13. Определение пользовательских методов класса. Модификаторы доступа к методам класса. Параметры методов класса, передача аргументов. Модификаторы ref, out, params параметров методов.

Модификаторы параметров методов класса . this – специальная переменная, которая доступна во всех методах класса, //в том числе и в конструкторах. This всегда ссылается на текущий экземпляр. Методы Get_x и Get_y служат для обращения к закрытым переменным класса. В C# для доступа к закрытым переменным используются свойства. Они сочетают в себе методы get и set. Как происходит передача аргументов методу класса ? Изменения, внес. в параметры метода, не влияют на аргументы, используемые при вызове, сканировались. Первый способ передачи аргумента - вызов по значению. При передаче методу значения не ссылочного типа происх. вызов по значению. Для получения доступа к реальному аргументу, заданному при вызове, исп. ссылка на аргумент. Второй способ передачи аргумента наз. вызовом по ссылке (. Изменения, внес. в параметр, воздействуют на аргумент, исп-мый при вызове метода. Объекты передаются методу путем вызова по ссылке. Если не ссылочный параметр передается методу по значению, то, изменяя параметр, мы не влияем на реальный аргумент. Модификаторы ref, out и params для пар-ров методов. Мод-тор ref пишут и перед параметром в методе, и перед аргументом в вызове метода. Аргументу, передаваемому методу со словом ref, должно быть присвоено значение до вызова метода. Ведь параметр должен ссылаться на действит. значение. Ref обычно прим. для того, чтобы метод внес изменения в сущ-щие. Параметры out работают точно так же, как и параметры ref, но в них разрешается передавать не инициализируемые переменные. Но чаще всего, модификатор out исп-ся не для передачи значения методу, а для его получения из метода. Не нужно тогда переменной (аргументу со словом out) присваивать начальное значение до вызова метода. Примечание: Метод обязательно должен присвоить out-параметру значение. Модификаторы ref и out можно применять и к ссылочным параметрам, т.е параметрам-объектам. В этом случае реал-ся передача ссылки по ссылке. Это позволяет методу изменять объект, на кот. указывает ссылка-параметр. Использование переменного количества аргументов и модификатор params. Иногда нужен метод, который принимал бы произвольное число аргументов. Например, метод, который находит максимальное значение в наборе чисел. Методу может быть передано 2, 3, 4 и т.д значения. Такому методу нужен специальный параметр, который заменяет собой произвольное количество параметров. Это реализуется с помощью модификатора params. Модификатор params используется для объявления параметра массива, который сможет получить некоторое количество аргументов (в том числе и нулевое). В любом методе может быть только один модификатор params. Параметр с модификатором params может быть только последним параметром в списке параметров метода.

14. Возвращение методами объектов класса. Возвращение методами массивов.

Возвращение методами объектов. Метод может возвращать данные любого типа, в том числе классового. Для этого внутри метода нужно создать объект, а в return – вернуть его. В простых методах объект создавать можно в return.

Public Point uvelich_tochka(int koef) { return new Point (x*koef, y*koef); } в Main() Point T5=T1.uvelich_tochka(3); T5.show();

Возвращение методами массивов. Так как в C# массивы реализованы как объекты класса System.Array, э.зн. метод может возвратить массив.

В класс NaturChicla добавим метод, который возвращает массив, содержащий делители числа (от 2 до середины), а также их количество.

public int [ ] Deliteli (int x, out int kol)

{int [ ] Mas = new int [100];

// находим делители и помещаем их в массив Mas

int d, j = 0;

// j – индекс для множества, d – кандидат в делители

for (d=2; d<=x/2; d++);

if (Ostatok(x, d) = = 0)

{Mas [j] =d;

j++; }}

kol = j;

return Mas; } }

class Test_ NaturChicla

{

public static Main()

{

NaturChicla ob = new NaturChicla();

int count;

int [ ] Mas;]

Mas = ob.Deliteli(48, out count);

Console. WriteLine(“Делители числа 48: “);

for (int i=0; i<count: i++);

Console. WriteLine(“Mas[i] + “ “);

Console. WriteLine();

}

}