# Funksiyada Ref kalit so'zidan foydalanish

Biz shu vaqtgacha foydalangan funksiyalarda parametr sifatida berilgan o’zgaruvchilardan ma’lum natija olish uchun foydalandik, lekin biz hali parametrning qiymatini o’zgartirib ko’rmabmiz. Xo’sh parametrning qiymatini o’zgartirib nima qilamiz degan savol tug’ilishi tabiiy. Keling ikki sonni qiymatlarini o’zaro almashtiruvchi ‘swapp’ atalmish funksiya yaratib ko’ramiz.

Bu funksiyani ikki idish usuli (ya’ni ikkita idishdagi mahsulotlarni o’zaro almashtirish uchun uchinchi idishdan foydalanish ) yordamida tayyorlaymiz.

```csharp
void swapp(int a, int b)
{
    int k = a;
    a = b;
    b = k;
}
```

Va buni dasturda ishlatamiz:

```csharp
using System;
namespace function3
{
    class Program
    {  
        static void Main(string[] args)
        {
            int a = 8, b = 5;
            swapp(a, b);

            Console.WriteLine(a+"  "+b);
            Console.ReadKey();
        }
        static void swapp(int a, int b)
        {
            int k = a;
            a = b;
            b = k;
        }
    }
}
```

<\<output: 8    5

\
Afsuski natija biz kutgandek chiqmadi, ikki son o’z o’rnida chunki funksiya parametrlari standart holatda funksiya ichida o’zgarishlari funksiya tashqariga ta’sir qilmaydi. Bu muammoni hal qilish uchun bizga **ref** kalit so’zi yordamga keladi.

Biz yana yuqoridagi algoritm orqali funksiya yaratib olamiz faqat endigi safar ref yordamida.

```csharp
static void swapp(ref int a, ref int b)
{
    int k = a;
    a = b;
    b = k;
}
```

Va yangi funksyiani chaqirishda ham ref dan foydalanamiz.

```csharp
using System;
namespace function3
{
    class Program
    {  
        static void Main(string[] args)
        {
            int a = 8, b = 5;

            swapp(ref a,ref b);

            Console.WriteLine(a+"  "+b);
            Console.ReadKey();
        }
        static void swapp(ref int a,ref int b)
        {
            int k = a;
            a = b;
            b = k;
        }
    }
}
```

<\<output : 5    8

Va nihoyat biz kutgan natija ikki sonning o'rni almashmoqda buni **ref** kalit so'zisiz yaratish juda qiyin bo'lardi.

### Xulosa

**ref** kalit so’zi qachonki biz funksiya parametri faqat kerakli natija uchun vosita sifatida emas balki parametrni o’zining qiymatini o’zgartirish ustuvor vazifa bo’lsa biz uchun juda zarur bo’ladi.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.dot-net.uz/c-.net/basic/essential/funksiyada-ref-dan-foydalanish.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
