# Action delegati

**Action** delegati bu - [**Func**](https://docs.dot-net.uz/c-.net/basic/yuqori-daraja/delegatlar/func-delegati) kabi System nomlar fazosi tarkibiga kiruvchi umumiy delegatdir. **Action** delegati tuzilish jihatidan **Func** delegatiga o'xshash, lekin **Action** delegatida hech qanday parametr qaytarilmaydi. Shuning uchun **Action** delegati void tipli metodlar bilan ishlatiladi.

Masalan, quyidagi delegat int qiymatini ekranga chiqaradi:

```csharp
using System;

namespace Delegates
{
    class Program
    {
        public delegate void Print(int val);

        static void ConsolePrint(int i)
        {
            Console.WriteLine(i);
            Console.WriteLine("Print delegati yordamida ekranga chiqarildi");
        }

        static void Main(string[] args)
        {
            Print del_print = ConsolePrint;
            del_print(10);

            Console.ReadKey();
        }
    }
}
```

Natija:

![](/files/-MdDnt3q9HHqDaCcnKGo)

Endi xuddi shu metodni **Action** delegati yordamida ishlatib ko'ramiz:

```csharp
using System;

namespace Delegates
{
    class Program
    {
        static void ConsolePrint(int i)
        {
            Console.WriteLine(i);
            Console.WriteLine("Action delegati yordamida ekranga chiqarildi");
        }

        static void Main(string[] args)
        {
            Action<int> act_print = ConsolePrint;
            act_print(101);

            Console.ReadKey();
        }
    }
}
```

Natija:

![](/files/-MdDnt3swVATadqrlVQy)

Shu joyiga kelganda kallamni ichida qisqa tutashuv bo'lib simi tegib ketdi shekilli bir qiziq savol keb qoldi:

*Hali action delegati bilan, hali boshqa delegat bilan ishlatayotgan metodni o'ziga hech e'tibor berdingizmi? ConsolePrint metodining vazifasi nima? ConsolePrint metodini chaqirsam u baraka topkur Console.WriteLine metodini chaqiryapti. Ha qovun ConsolePrint ni ovora qilmasdan, to'g'ridan to'g'ri Console.WriteLine ga murojaat qilsam bo'lmaydimi?*

Xullas, yuz marta savol bergandan bir marta sinab ko'rgan yaxshi:

```csharp
using System;

namespace Delegates
{
    public delegate void Print(string i);
    public class Func3Example
    {
        public static void Main()
        {          
            Action<int> print = Console.WriteLine;
            print(12);

            Print del_print = Console.WriteLine;
            del_print("Xullas, bunaqasiyam ishlorakan ;)");

            Console.ReadKey();
        }
    }
}
```

Natija:

![](/files/-MdDnt3tAacLRZq4JoZa)

**Action** delegatini new kalit so'zi yordamida ham e'lon qilish mumkin:

```csharp
Action<int> print = new Action<int>(Console.WriteLine);
```

{% hint style="info" %}
**Action** delegati 16 tagacha har xil turdagi kirish parametrlarini qabul qilishi mumkin.
{% endhint %}

**Action** delagatining anonim metod bilan qo'llanishi:

```csharp
static void Main(string[] args)
{
    Action<int> printActionDel = delegate(int i)
                                {
                                    Console.WriteLine(i);
                                };

    printActionDel(10);
}
```

**Action** delegatining lyambda ifoda bilan qo'llanishi:

```csharp
static void Main(string[] args)
{
    Action<int> printActionDel = i => Console.WriteLine(i);

    printActionDel(10);
}
```

{% hint style="success" %}
**Action va Func delegatlarining afzalliklari**

* Delegatlarni aniqlash oson va tez.
* Kodni qisqa qiladi.
* Ilova davomida mos keladigan tip.
  {% endhint %}

***Shunday qilib, Action delegati tiplari bilan qiymat qaytarmaydigan har qanday metoddan foydalanishingiz mumkin.***


---

# 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/yuqori-daraja/delegatlar/action-delegati.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.
