Parametrlarni mos yozuvlar va ref modifikatori orqali o'tkazish




Download 40.2 Kb.
bet5/7
Sana28.04.2023
Hajmi40.2 Kb.
#54488
1   2   3   4   5   6   7
Bog'liq
6 - mavzu
Ulug\'bek Odiljonov, 151322
Parametrlarni mos yozuvlar va ref modifikatori orqali o'tkazish. Parametrlarni mos yozuvlar bo'yicha o'tkazishda ref modifikator parametrlardan oldin ishlatiladi :
void Increment(ref int n)
{
n++;
Console.WriteLine($"Kattalashishdan oldingi raqam: {n}");
}
int number = 5;
Console.WriteLine($"Kattalashishdan oldingi raqam: {number}");
Increment(ref number);
Console.WriteLine($"Kattalshgan raqam: {number}");
Konsolga chiqishi:
Kattalashishdan oldingi raqam5
Kattalashishdan oldingi raqam 6
Qiymatlarni parametrlarga mos yozuvlar bo'yicha o'tkazishda usul xotiradagi o'zgaruvchining manzilini oladi. Va shunday qilib, agar mos yozuvlar orqali o'tgan parametrning qiymati usulda o'zgartirilsa, u holda uning o'rniga uzatiladigan o'zgaruvchining qiymati ham o'zgaradi. Masalan, xotiradagi raqam o'zgaruvchisining o'ziga havola Increment usuliga o'tkaziladi. Va agar Increment-dagi n parametrining qiymati o'zgarsa, bu raqam o'zgaruvchisini ham o'zgartiradi, chunki n parametr va raqam o'zgaruvchisi xotiradagi bir xil manzilga ishora qiladi.
E'tibor bering, modifikator refusulni e'lon qilishda parametrdan oldin ham, usulni chaqirganda ham parametrga uzatiladigan argumentdan oldin ko'rsatiladi. chiqish parametrlari. tashqaridagi modifikator
Yuqorida biz kirish parametrlaridan foydalanganmiz. Lekin parametrlar ham chiqarilishi mumkin. Parametrni chiqish qilish uchun uning oldiga out modifikatorini qo'ying:
void Sum(int x, int y, out int result)
{
result = x + y;
}
Bu erda natija operator orqali emas return, balki natija chiqish parametri orqali qaytariladi. Dasturda foydalaning:
void Sum(int x, int y, out int result)
{
result = x + y;
}
int number;
Sum(10, 15, out number);
Console.WriteLine(number);// 25
Bundan tashqari, ref misolida bo'lgani kabi , out kalit so'zi ham usulni belgilashda, ham uni chaqirishda ishlatiladi.
Shuni ham yodda tutingki, bunday parametrlardan foydalanadigan usullar ularga ma'lum bir qiymat berishlari kerak. Ya'ni, quyidagi kod yaroqsiz bo'ladi, chunki u out parametri uchun hech qanday qiymat ko'rsatmaydi:
void Sum(int x, int y, out int result)
{
Console.WriteLine(x + y);
}
Bunday parametrlardan foydalanishning go'zalligi shundaki, aslida biz usuldan bitta qiymatni emas, balki bir nechta qiymatni qaytarishimiz mumkin. Masalan:
void GetRectangleData(int width, int height, out int rectArea, out int rectPerimetr)
{
rectArea = width * height
rectPerimetr = (width + height) * 2;
}
int area;
int perimetr;
GetRectangleData(10, 20, out area, out perimetr);
Console.WriteLine($"To'rtburchaklar maydoni: {area}"); // 200
Console.WriteLine($"To'rtburchakning perimetri: {perimetr}"); // 60
Bu erda to'rtburchakning kengligi va balandligini (kenglik va balandlik parametrlari) oladigan GetRectangleData usuli mavjud. Va biz to'rtburchakning maydoni va perimetrini hisoblash uchun ikkita chiqish parametridan foydalanamiz.

Bunday holda, siz usul chaqirilganda to'g'ridan-to'g'ri out -parameters ga uzatiladigan o'zgaruvchilarni belgilashingiz mumkin. Ya'ni, oldingi misolni quyidagicha qisqartirishimiz mumkin:


void GetRectangleData(int width, int height, out int rectArea, out int rectPerimetr)
{
rectArea = width * height;
rectPerimetr = (width + height) * 2;
}
GetRectangleData(10, 20, out int area, out int perimetr);
Console.WriteLine($"To’rtburchak maydoni: {area}"); // 200
Console.WriteLine($"To’rtburchak peremetri: {perimetr}"); // 60
Shu bilan birga, agar biz parametrlarga tayinlanadigan qiymatlar turini bilmasak, ularni aniqlash uchun var operatoridan foydalanishimiz mumkin :
GetRectangleData(10, 20, out var area, out var perimetr);
Console.WriteLine($"To’rtburcchak maydoni: {area}"); // 200
Console.WriteLine($"To’rtburchak peremetri: {perimetr}"); // 60
Kirish parametrlari. Modifikatorda Out modifikatorli chiqish parametrlariga qo'shimcha ravishda, usul in modifikatori bilan kirish parametrlaridan foydalanishi mumkin . In modifikatori ushbu parametr mos yozuvlar orqali usulga o'tkazilishini bildiradi, lekin usul ichida uning parametr qiymatini o'zgartirib bo'lmaydi. Masalan, quyidagi usulni oling:
void GetRectangleData(in int width, in int height, out int rectArea, out int rectPerimetr)
{
rectArea = width * height;
rectPerimetr = (width + height) * 2;
}
int w = 10;
int h = 20;
GetRectangleData(w, h, out var area, out var perimetr);
Console.WriteLine($"To’rtbuchak maydoni: {area}"); // 200
Console.WriteLine($"To’rtburchak peremetri: {perimetr}"); // 60
Bunday holda, qiymatlar kirish parametrlari orqali widthva usulga o'tkaziladi, ammo usulning o'zida biz ushbu parametrlarning qiymatlarini o'zgartira olmaymiz, chunki ular inheight modifikatori bilan aniqlanadi.
Malumot orqali o'tish ba'zi hollarda unumdorlikni oshirishi mumkin va in operatoridan foydalanish parametrlarga uzatilgan o'zgaruvchilarni bu usulda o'zgartirib bo'lmaydi.


  1. Download 40.2 Kb.
1   2   3   4   5   6   7




Download 40.2 Kb.

Bosh sahifa
Aloqalar

    Bosh sahifa



Parametrlarni mos yozuvlar va ref modifikatori orqali o'tkazish

Download 40.2 Kb.