Объектно-ориентированное программирование
Автор: Alimger28 • Апрель 1, 2021 • Контрольная работа • 1,521 Слов (7 Страниц) • 376 Просмотры
Объектно-ориентированное программирование
5 – Семинар жұмысы
Орындаған : Құрмашев Әлімгер
Тобы : СИБ – 1904
Тексерген : Кожанова Аида Молдабаевна
Ref және Out модификаторлары
1. Ref параметрінің модификаторын қолдану. Ref параметрінің модификаторының мақсаты қандай?
Ref модификаторы әдіс параметрі мәні бойынша емес, сілтеме бойынша берілуі керек екенін көрсетуге арналған. Басқаша айтқанда, егер әдіс аргументті сілтеме арқылы беруге мәжбүр болса, онда әдісті жариялау кезінде тиісті ресми параметрдің алдында ref модификаторын көрсету керек.
Ref параметр модификаторы формальды әдіс параметрін сипаттауда қолданылады. Ref параметрінің модификаторы төменде көрсетілгендей ресми параметр түріне дейін көрсетілген:
ref type param
Ref ресми параметрін алатын сыныптағы әдістің жалпы формасы келесідей:
access return_type MethodName(ref type param)
{
// ...
} онда:
Әдісname-әдіс атауы;
access-әдіске қол жеткізу түрі (private, protected, public, internal);
return_type-әдіс арқылы қайтарылатын түрі;
type-бұл әдісті алатын param деп аталатын параметр түрі;
парам - ресми параметрдің атауы.
Бұл әдісті басқа кодтан шақырған кезде параметрге ref модификаторы қойылады:
MethodName(refargument);
мұндағы аргумент-бұл әдіске берілетін дәлел. Бұл үшін C # синтаксисі қажет.
Параметрлерді берудің ең оңай жолы-мәні бойынша беру, іс жүзінде бұл параметрлерді берудің әдеттегі әдісі:
1 2 3 4 5 6 7 8 9 10 11 12 | class Program { static void Main(string[] args) { Sum(10, 15); // параметры передаются по значению Console.ReadKey(); } static int Sum(int x, int y) { return x + y; } } |
Параметрлерді сілтеме және ref модификаторы арқылы беру
Параметрлерді параметрлер алдындағы сілтеме арқылы беру кезінде ref модификаторы қолданылады:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | static void Main(string[] args) { int x = 10; int y = 15; Addition(ref x, y); // вызов метода Console.WriteLine(x); // 25
Console.ReadLine(); } // параметр x передается по ссылке static void Addition(ref int x, int y) { x += y; } |
Ref модификаторы әдісті жариялау кезінде де, оны Main әдісінде шақырған кезде де көрсетілетініне назар аударыңыз.
Трансмиссияны мәні мен сілтемесі бойынша салыстыру
Параметрлерді берудің екі әдісінің айырмашылығы неде? Мәнді беру кезінде әдіс айнымалыны өзі емес, оның көшірмесін алады. Параметрді сілтеме арқылы жіберген кезде әдіс жадтағы айнымалының мекенжайын алады. Сонымен, егер әдіс сілтеме арқылы берілетін параметрдің мәнін өзгертсе, онда оның орнына берілетін айнымалының мәні де өзгереді.
Ұқсас екі мысалды қарастырайық. Бірінші мысал-параметрді мәні бойынша беру:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | class Program { static void Main(string[] args) { int a = 5; Console.WriteLine($"Начальное значение переменной a = {a}");
//Передача переменных по значению //После выполнения этого кода по-прежнему a = 5, так как мы передали лишь ее копию IncrementVal(a); Console.WriteLine($"Переменная a после передачи по значению равна = {a}"); Console.ReadKey(); } // передача по значению static void IncrementVal(int x) { x++; Console.WriteLine($"IncrementVal: {x}"); } } |
Консольді шығару:
...