# Extension metodlar

Extension metodlar oldindan aniqlangan tiplarga yangi metodlarni qo’shish imkoniyatini beradi. Bunday metodlar juda foydali bo’ladi agar bizda klass kodlarini o’zgartirishga imkoniyatimiz bo’lmasa. Yoki bo’lmasa voris olish imkoniyatimiz bo’lmasa, misol uchun klass *sealed* modifikatori bilan aniqlangan bo’lsa. Misol uchun biz string tipiga yangi metod qo’shmoqchimiz:

```csharp
int i = s.DigitsCount();
Console.WriteLine(i);

public static class StringExtension
{
    public static int DigitsCount(this string str)
    {
        int x = str. Count(c => Char.IsDigit(c));
        return x;
    }
}
```

Extension metod tuzish uchun oldin static klass yaratib olish kerak, aynan shu klassda extension metod yoziladi. Bizning misolda bu **StringExtension**. Bu klassga static metod yaratiladi. Bizning misolda bu **DigitsCount**. Bu metodning vazifasi satrdagi raqamlar sonini aniqlash. Umuman olganda extension metod bu oddiy static metod, faqat u birinchi parametr sifatida quyidagi ko’rinishida parametr yoziladi: `this tip_nomi patametr_nomi`, bizning holatda bu `this string str`. Bizning extension metodimiz string tipi uchun bo’lgani sababli biz string tipini ishlatamiz.

Endi bu metodni xohlagan satrimizga ishlatimiz mumkin:

```csharp
int i=”nimadir123”.DigitsCount();
```

Birinchi parametrni berish ham shart emas, birinchi parametr sifatida satrni o’zini oladi. Agar qo’shimcha parametr qo’shish kerak bo’lsa ikinchi, uchinchi parametr sifatida ketma-ket qo’shib yozilaveradi:

```csharp
public static ExtMethod(this int i, int x, int y){ … };
int x  =1; x.ExtMethod(1,2);
```


---

# 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/extension-metodlar.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.
