TOC

This article has been localized into Georgian by the community.

საფუძვლები:

ფუნქციები

ფუნქციები კოდის ნაწილის კაფსულირებისა და მისი სხვადასხვა ადგილიდან გამოძახების საშუალებას გაძლევთ. ძალიან მალე აღმოჩნდებით ისეთ სიტუაციაში სადაც სხვადასხვა ადგილას ერთი და იმავე კოდის გამეორება დაგჭირდებათ, და აი აქ შემოდის ფუნქციები. C#-ში ისინი ძირითადად ასეთი სახით ცხადდება:

<visibility> <return type> <name>(<parameters>)
{
<function code>
}

ფუნქციის გამოსაძახებლად უბრალოდ წერთ ამ ფუნქციის სახელს, ხსნით ფრჩხილს, შემდეგ წერთ პარამეტრებს, თუ არსებობს ასეთი, და ბოლოს ხურავთ ფრჩხილს, როგორც აქ არის ნაჩვენები:

DoStuff();

აქ არის ჩვენი DoStuff() ფუნქციის მაგალითი:

public void DoStuff()
{
    Console.WriteLine("I'm doing something...");
}

პირველი ნაწილი, public, ხილვადობის განმსაზღვრელია, რომელიც არ არის სავალდებულო, თუ მას არ დაწერთ იგულისხმება რომ ფუნქცია არის private. ამის შესახებ მოგვიანებით. შემდეგ მოდის დასაბრუნებელი ტიპი. ის შეიძლება იყოს C#-ის ნებისმიერი ვალიდური ტიპი ან როგორც აქ გავაკეთეთ void ტიპი. void ნიშნავს რომ ფუნქცია საერთოდ არაფერს არ აბრუნებს. ასევე ფუნქცია არ იღებს პარამეტრებს, რასაც ცარიელი ფრჩხილებიდან ხედავთ. ასეთი ფუნქცია, ცოტა არ იყოს, მოსაწყენია. მოდით შევცვალოთ:

public int AddNumbers(int number1, int number2)
{
    int result = number1 + number2;
    return result;
}

თითქმის ყველაფერი შევცვალეთ. ახლა ფუნქცია მთელ რიცხვს აბრუნებს, იღებს ორ პარამეტრს (ორივე მთელი რიცხვია) და დაბეჭდვის მაგივრად კალკულაციას ასრულებს და გვიბრუნებს შედეგს. ეს ნიშნავს რომ უბრალოდ ამ ფუნქციის დაძახებით კოდის ნებისმიერი ადგილიდან შეგვიძლია ორი რიცხვის შეკრება, იმის მაგივრად რომ კალკულაციის კოდი ყველა ჯერზე თავიდან დაგვეწერა. მიუხედავად იმისა, რომ ამ პატარა მაგალითში დიდი დრო და ძალისხმევა არ დაგვიზოგავს, დამერწმუნეთ, რომ C#-ის გამოყენებასთან ერთად ფუნქციების გამოყენება შეგიყვარდებათ. ამ ფუნქციის გამოძახება ასე ხდება:

int result = AddNumbers(10, 5);
Console.WriteLine(result);

როგორც აღვნიშნეთ, ეს ფუნქცია აბრუნებს მნიშვნელობას, და უნდა აბრუნებდეს კიდეც, რადგან ჩვენ ვუთხარით რომ ასე უნდა იქცეოდეს. როდესაც დასაბრუნებელ ტიპად void-ის გარდა სხვა რამეს ვუთითებთ, საკუთარ თავს ვაიძულებთ რომ რაღაც აუცილებლად დავაბრუნოთ. შეგიძლია ის კოდის ხაზი მოაშოროთ სადაც მნიშვნელობას აბრუნებთ და დაინახავთ რომ კომპილატორი ამას გააპროტესტებს.

'AddNumbers(int, int)': not all code paths return a value (კოდის ყველა ნაწილი არ აბრუნებს მნიშვნელობას)

კომპილატორი გვახსენებს რომ ჩვენ გვაქვს ფუნქცია რომელიც არაფერს არ აბრუნებს, მიუხედავად იმისა რომ ჩვენ მას შევპირდით. კომპილატორი საკმაოდ ჭკვიანია! ხაზის წაშლის მაგივრად ასეთი რამ სცადეთ:

public int AddNumbers(int number1, int number2)
{
    int result = number1 + number2;
    if(result > 10)
    {
return result;
    }
}

ზუსტად იგივე შეცდომას დაინახავთ - მაგრამ რატომ? იმიტომ, რომ არ არის იმის გარანტია, რომ if-ში მოთავსებული გამოსახულება ჭეშმარიტი აღმოჩნდება და მნიშვნელობის დაბრუნების ხაზი შესრულდება. ეს პრობლემა შეგიძლიათ ნაგულისხმევი მნიშვნელობის დაბრუნებით მოაგვაროთ.

public int AddNumbers(int number1, int number2)
{
    int result = number1 + number2;
    if(result > 10)
    {
return result;
    }
    return 0;
}

ჩვენ მოვაგვარეთ პრობლემა რომელიც ჩვენთვითონვე შევქმენით. ამით თქვენ დაინახეთ რომ ფუნქცია შესაძლოა რამდენიმე დაბრუნების გამოსახულებას შეიცავდეს. როგორც კი დაბრუნების გამოსახულება შესრულდება, ფუნქცია მაშინვე დამთავრდება და დანარჩენი კოდი აღარ შესრულდება. ამ შემთხვევაში ეს იმას ნიშნავს, რომ შედეგი 10-ზე მეტი თუ იქნება კოდის შესრულება "return 0"-მდე ვეღარ მიაღწევს.

This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!