Sobes.tech
Junior

Ҳудуд (scoped) дар C# чист?

sobes.tech AI

Ҷавоб аз AI

Дарои назорат дар C# муайян мекунад, ки тағйирёбҳо, усулҳо ва намудҳо дар кадом қисми барнома дастрас мебошанд. Ин маҳдудиятест дар бораи он, ки дар куҷо дар код муайянкунанда истифода бурда мешавад.

Бастаи асосии дарки:

  • Блоки код: Тағйирёбҳо, ки дар дохили сӯрохиҳои { } эълон шудаанд, танҳо дар дохили ҳамин блок дастрас мебошанд.
  • Дараҷаи усул: Тағйирёбҳо ва параметрҳо, ки дар дохили усул эълон шудаанд, танҳо дар дохили ҳамин усул дастрас мебошанд.
  • Дараҷаи синф/структура: Узвҳои синф ё структура (майдонҳо, хусусиятҳо, усулҳо) вобаста ба тағйирёбандаҳои дастрасӣ (public, private, protected, internal) дастрас мебошанд.
  • Дараҷаи фазои ном: Намудиҳо, ки дар фазои ном эълон шудаанд, дар ин фазо ва дар дигар фазоҳои ном, ки using истифода мешаванд, дастрас мебошанд.
  • Дараҷаи маҷмӯъ: Намудиҳо бо тағйирёбандаи internal танҳо дар дохили маҷмӯъи ҳозира дастрас мебошанд.

Масалан, дарки блоки код:

public void ExampleMethod()
{
    int x = 10; // x танҳо дар дохили ExampleMethod дастрас аст
    if (x > 5)
    {
        int y = 20; // y танҳо дар дохили блоки if дастрас аст
        Console.WriteLine(y);
    }
    // Console.WriteLine(y); // Хатои компилятсия: y дар ин ҷо дастрас нест
}