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; // Խնդիր
}
}