Junior
Millised on juurdepääsukorraldajad C#-s
sobes.tech AI
Vastus AI-lt
C# keeles on järgmised juurdepääsukorraldajad:
- public: Juurdepääs ei ole piiratud.
public-märgitud liikmed on kättesaadavad igast kohast, kus on nende sisaldav tüüp saadaval. - private: Juurdepääs on piiratud nende sisaldava tüübi poolt.
private-märgitud liikmed on kättesaadavad ainult sama klassi või struktuuri koodist. - protected: Juurdepääs on piiratud või sisaldava tüübi või selle pärilike tüüpide poolt.
protected-märgitud liikmed on kättesaadavad oma klassi ja pärilike klasside sees. - internal: Juurdepääs on piiratud praeguse koostuse (.dll või .exe) piires.
internal-märgitud liikmed on kättesaadavad igast kohast sama koostuse sees. - protected internal: Juurdepääs on piiratud praeguse koostuse või selle pärilike tüüpide poolt teistes koostustes. See on
protectedjainternalkombinatsioon. - private protected: Juurdepääs on piiratud sisaldava tüübi või selle pärilike tüüpide poolt ainult samas koostuses. See on
privatejaprotectedkombinatsioon.
// Juurdepääsukorraldajate näide
public class MyClass
{
public int PublicField; // Saadaval igast kohast
private int PrivateField; // Saadaval ainult MyClass sees
protected int ProtectedField; // Saadaval MyClass ja pärilikes klassides
internal int InternalField; // Saadaval praeguses koostuses
protected internal int ProtectedInternalField; // Saadaval praeguses koostuses VÕI pärilikes klassides
private protected int PrivateProtectedField; // Saadaval ainult MyClass ja pärilikes klassides samas koostuses
void MyMethod()
{
PrivateField = 10; // OK
}
}
public class DerivedClass : MyClass
{
void DerivedMethod()
{
ProtectedField = 20; // OK
// PrivateField = 30; // Viga - privaatne väli ei ole pärilikus nähtav
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; // Viga
// mc.ProtectedField = 5; // Viga
// mc.PrivateProtectedField = 6; // Viga
}
}