4(9)-дәріс. Қасиеттер, әдіс параметрлерінің ref және out модификаторлары



бет1/3
Дата18.10.2023
өлшемі87,96 Kb.
#118728
түріПрограмма
  1   2   3

4(9)-дәріс. Қасиеттер, әдіс параметрлерінің ref және out
модификаторлары
1-бөлім. Әдіс параметрлерінің ref және out модификаторлары
Программада әдісті шақырған кезде оның параметрлерінің орнына солар­дың типтеріне сәйкес мәндер берілуі тиіс. Сол берілген мәндерді нақты (фактілік түрдегі) аргументтер деп атайды. Жалпы әдіске параметрлерді, яғни аргумент­терді берудің мән бойынша және сілтеме бойынша деп аталатын екі түрі бар.
Параметр мән бойынша берілгенде, әдіс айнымалының өзін емес, оның көшірмесін алады. Ал параметр сілтеме бойынша берілгенде, әдіс айнымалының компьютер жадындағы адресін алады. Сондықтан, егер сілтеме бойынша беріле­тін параметр мәні өзгерсе, онда оның орнына қойылатын айнымалы мәні де өзгереді.
Қарапайым типтегі аргументтер, мысалы, int, float немесе char, әдіске мән бойынша беріледі. Мұнда мән қабылдайтын параметрге енгізілетін өзгерістер әдісті шақыру үшін қолданылатын аргументке әсер етпейді.
Бірақ мұны қарапайым типтердегі мәндерді сілтеме арқылы беру кезінде ref және out түйінді сөздері арқылы өзгертуге болады. Ол қарапайым типтегі мәндер­ді қажеттілігіне қарай сілтеме бойынша беруді жүзеге асырады.
Жалпы мұның екі түрі бар:

  1. әдіске оның аргументтерін өзгертуге рұқсат беру (ref түйінді сөзі);

  2. әдіске оны шақырған программаға бірнеше мән қайтару мүмкіндігін беру (out түйінді сөзі).

Параметрдің ref модификаторы әдісті мән бойынша емес, мәжбүрлі түрде сілтеме бойынша шақырады. Бұл модификатор әдісті жариялау кезінде де және оны шақырғанда да көрсетіледі.
Келесі мысалда Sqr() әдісі құрылады, ол оған берілген бүтін аргументтің квадратын қайтарады:
using System;
using System.Text;
namespace Mysal
{ class RefJarialau
{ // Бұл әдіс ref сөзі арқылы өз аргументін өзгертеді.
public void Sqr(ref int i) { i = i * i; }
}
class RefQoldanu
{ static void Main(string[] args)
{ Console.OutputEncoding = Encoding.UTF8;
RefJarialau ob = new RefJarialau(); // ob енді cілтеме бойынша
int a = 10;
Console.WriteLine("Әдісті шақыруға дейінгі a: " + a);
ob.Sqr(ref a); // ref модификаторы қолданылды
Console.WriteLine("Әдісті бірінші шақырудан кейінгі a: " + a);
ob.Sqr(ref a); // ref модификаторы қолданылды
Console.WriteLine("Әдісті екінші шақырудан кейінгі a: " + a);
ob.Sqr(ref a); // ref модификаторы қолданылды
Console.WriteLine("Әдісті үшінші шақырудан кейінгі a: " + a);
Console.ReadLine();
}
}
}
П рограмма нәтижесі:
Мұнда ref модификаторы әдісті жариялағанда параметр алдында және әдісті шақырғанда да аргумент алдында көрсетілді. Программа нәтижесінде де аргумент мәні Sqr() әдісі әр шақырған сайын өзгеріп отырады.
Осыған қарап ref модификаторы туралы келесідей қорытындыға келеміз:

  • Бұл модификатор арқылы сілтеме бойынша берілетін аргументке әдіс шақырылғанға дейін мән берілуі тиіс.

  • Параметр ретінде мұндай аргумент алатын әдісте параметр белгілі бір мәнге сілтеме жасайды деп есептеледі.

  • ref модификаторын қолданған кезде әдіс ішінде аргументтің бастапқы мәнін беруге болмайды.



Достарыңызбен бөлісу:
  1   2   3




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет