Junior
C#-ში წვდომის მოდიფიკატორები რა არის?
sobes.tech AI
პასუხი AI-სგან
C# тілінде келесі қол жеткізу модификаторлары бар:
- public: Қолжетімділік шектелмеген.
publicдеп белгіленген мүшелер кез келген жерден қол жетімді, олардың қамтитын түрі қол жетімді болса. - private: Қолжетімділік олардың қамтитын түріне шектелген.
privateдеп белгіленген мүшелер тек сол кластың немесе құрылымның ішіндегі кодтан қол жетімді. - protected: Қолжетімділік қамтитын түрі немесе оның мұрагерлік түрлерімен шектелген.
protectedдеп белгіленген мүшелер өз класы мен мұрагерлік кластарында қол жетімді. - internal: Қолжетімділік ағымдағы жинақтауышпен (.dll немесе .exe) шектелген.
internalдеп белгіленген мүшелер сол жинақтауыш ішінде кез келген жерден қол жетімді. - protected internal: Қолжетімділік ағымдағы жинақтауышпен немесе басқа жинақтауыштарда қамтитын түрлермен шектелген. Бұл
protectedжәнеinternalкомбинациясы. - private protected: Қолжетімділік қамтитын түрі немесе оның мұрагерлік түрлерімен ғана шектелген, сол жинақтауышта. Бұл
privateжәнеprotectedкомбинациясы.
// Қолжетімділік модификаторларын қолдану мысалы
public class MyClass
{
public int PublicField; // Кез келген жерден қол жетімді
private int PrivateField; // Тек MyClass ішінде қол жетімді
protected int ProtectedField; // MyClass ішінде және мұрагерлік кластарда қол жетімді
internal int InternalField; // Ағымдағы жинақтауышта қол жетімді
protected internal int ProtectedInternalField; // Ағымдағы жинақтауышта немесе мұрагерлік кластарда қол жетімді
private protected int PrivateProtectedField; // Тек MyClass ішінде және мұрагерлік кластарда қол жетімді
void MyMethod()
{
PrivateField = 10; // Жақсы
}
}
public class DerivedClass : MyClass
{
void DerivedMethod()
{
ProtectedField = 20; // Жақсы
// PrivateField = 30; // Қате - жеке өріс мұрагерлікке қол жетімді емес
ProtectedInternalField = 40; // Жақсы
PrivateProtectedField = 50; // Жақсы
}
}
public class AnotherClassInSameAssembly
{
void AnotherMethod()
{
MyClass mc = new MyClass();
mc.PublicField = 1; // Жақсы
mc.InternalField = 2; // Жақсы
mc.ProtectedInternalField = 3; // Жақсы
// mc.PrivateField = 4; // Қате
// mc.ProtectedField = 5; // Қате
// mc.PrivateProtectedField = 6; // Қате
}
}