Junior
C# da kirish modifikatorlari qanday?
sobes.tech AI
AIdan javob
C# tilida quyidagi kirish modifikatorlari mavjud:
- public: Kirish cheklanmagan.
publicbilan belgilangan a'zolar, ularning qamrab oluvchi turi kirish mumkin bo'lgan joydan har qanday joydan kirish mumkin. - private: Kirish, ularni qamrab oluvchi tur bilan cheklangan.
privatebilan belgilangan a'zolar, faqat shuningdek, ularning sinfi yoki strukturasida koddan kirish mumkin. - protected: Kirish, ularni qamrab oluvchi tur yoki undan meros olgan turlar bilan cheklangan.
protectedbilan belgilangan a'zolar, o'z sinfi va meros olgan sinflarda kirish mumkin. - internal: Kirish, joriy yig'ish bilan cheklangan (.dll yoki .exe).
internalbilan belgilangan a'zolar, joriy yig'ishda har qanday joydan kirish mumkin. - protected internal: Kirish, joriy yig'ish yoki boshqa yig'ishlardagi meros olgan turlar bilan cheklangan. Bu
protectedvainternalning kombinatsiyasi. - private protected: Kirish, ularni qamrab oluvchi tur yoki undan meros olgan turlar bilan, faqat ayni yig'ishda cheklangan. Bu
privatevaprotectedning kombinatsiyasi.
// Kirish modifikatorlaridan foydalanish misoli
public class MyClass
{
public int PublicField; // Har qanday joydan kirish mumkin
private int PrivateField; // Faqat MyClass ichida kirish mumkin
protected int ProtectedField; // MyClass va meros olgan sinflarda kirish mumkin
internal int InternalField; // Joriy yig'ishda kirish mumkin
protected internal int ProtectedInternalField; // Joriy yig'ishda yoki meros olgan sinflarda kirish mumkin
private protected int PrivateProtectedField; // MyClass yoki bu yig'ishda meros olgan sinflarda kirish mumkin
void MyMethod()
{
PrivateField = 10; // OK
}
}
public class DerivedClass : MyClass
{
void DerivedMethod()
{
ProtectedField = 20; // OK
// PrivateField = 30; // Xato - shaxsiy maydon merosda kirish mumkin emas
ProtectedInternalField = 40; // OK
PrivateProtectedField = 50; // OK
}
}
public class AnotherClassInSameAssembly
{
void AnotherMethod()
{
MyClass mc = new MyClass();
mc.PublicField = 1; // OK
mc.InternalField = 2; // OK
mc.ProtectedInternalField = 3; // OK
// mc.PrivateField = 4; // Xato
// mc.ProtectedField = 5; // Xato
// mc.PrivateProtectedField = 6; // Xato
}
}