Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Передача параметров по значению и по ссылке




Параметры по умолчанию

Язык C# начиная с версии 4.0 (Visual Studio 2010) позволяет задавать некоторым параметрам значения по умолчанию – так, чтобы при вызове метода можно было опускать часть параметров. Для этого при реализации метода нужным параметрам следует присвоить значение прямо в списке параметров:

 

private void GetData(int Number, int Optional = 5)

{

MessageBox.Show("Number: {0}", Number);

MessageBox.Show("Optional: {0}", Optional);

}

 

В этом случае вызывать метод можно следующим образом:

 

GetData(10, 20);

GetData(10);

 

В первом случае параметр Optional будет равен 20, так как он явно задан, а во втором будет равен 5, т.к. явно он не задан и компилятор берёт значение по умолчанию.

Параметры по умолчанию можно ставить только в правой части списка параметров, например, такая сигнатура метода компилятором принята не будет:

 

private void GetData(int Optional = 5, int Number)

 

Когда параметры передаются в метод обычным образом (без дополнительных ключевых слов ref и out), любые изменения параметров внутри метода не влияют на его значение в основной программе. Предположим, у нас есть следующий метод:

 

private void Calc(int Number)

{

Number = 10;

}

 

Видно, что внутри метода происходит изменение переменной Number, которая была передана как параметр. Попробуем вызвать метод:

 

int n = 1;

Calc(n);

MessageBox.Show(n.ToString());

 

На экране появится число 1, то есть, не смотря на изменение переменной в методе Calc, значение переменной в главной программе не изменилось. Это связано с тем, что при вызове метода создаётся копия переданной переменной, именно её изменяет метод. При завершении метода значение копий теряется. Такой способ передачи параметра называется передачей по значению.

Чтобы метод мог изменять переданную ему переменную, её следует передавать с ключевым словом ref – оно должно быть как в сигнатуре метода, так и при вызове:

 

private void Calc(ref int Number)

{

Number = 10;

}

 

int n = 1;

Calc(ref n);

MessageBox.Show(n.ToString());

 

В этом случае на экране появится число 10: изменение значения в методе сказалось и на главной программе. Такая передача метода называется передачей по ссылке, т.е. передаётся уже не копия, а ссылка на реальную переменную в памяти.

Если метод использует переменные по ссылке только для возврата значений и не имеет значения что в них было изначально, то можно не инициализировать такие переменные, а передавать их с ключевым словом out. Компилятор понимает, что начальное значение переменной не важно и не ругается на отсутствие инициализации:

 

private void Calc(out int Number)

{

Number = 10;

}

 

int n; // Ничего не присваиваем!

Calc(out n);

 

Индивидуальное задание

1. Написать метод min(x, y), находящий минимальное значение из двух чисел. С его помощью найти минимальное значение из четырёх чисел a, b, c, d.

2. Написать метод max(x, y), находящий максимальное значение из двух чисел. С его помощью найти максимальное значение из четырёх чисел a, b, c, d.

3. Написать метод, вычисляющий значение n/xn. С его помощью вычислить выражение:

4. Написать метод, вычисляющий значение n/xn. С его помощью вычислить выражение:

5. Написать метод, вычисляющий значение xn/(n+x). С его помощью вычислить выражение:

6. Написать метод, вычисляющий значение sin(x) + cos(2 * x). С его помощью определить в какой из точек a, b или с значение будет минимальным.

7. Написать метод, вычисляющий значение x2 + y2. С его помощью определить с какой парой чисел (a, b) или (с, d) значение будет максимальным.

8. Написать метод, вычисляющий значение x2 * y3 * . С его помощью определить с какой тройкой чисел (a, b, c) или (d, e, f) значение будет максимальным.

9. Написать метод, который у чётных чисел меняет знак, а нечётные числа оставляет без изменения. С его помощью обработать ряд чисел от 1 до 10.

10. Написать метод, который положительные числа возводит в квадрат, а отрицательные – в куб. С его помощью обработать ряд чисел от -10 до 10.

11. Написать метод, который вычисляет значения x=sin2(a) и y=cos2(a). Напечатать таблицу значений от –π до π с шагом π/4.

12. Написать метод, который вычисляет значения x=a2 и y= . Напечатать таблицу значений от –10 до 10 с шагом 1.

13. Написать метод, который в переданной строке заменяет все точки на многоточие. С его помощью обработать пять разных строк и отобразить их на экране.

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

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

Лабораторная работа №14
Сортировка и поиск

Цель лабораторной работы: освоить основные алгоритмы сортировки, написать программу с использованием этих алгоритмов.




Поделиться с друзьями:


Дата добавления: 2014-11-07; Просмотров: 767; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.008 сек.