Junior
Welke toegangsmodifiers zijn er in C#?
sobes.tech AI
Antwoord van AI
In C# bestaan de volgende toegangsmodifiers:
- public: Toegang is niet beperkt. Leden gemarkeerd als
publiczijn toegankelijk vanaf elke plek waar hun omringende type toegankelijk is. - private: Toegang is beperkt tot hun omringende type. Leden gemarkeerd als
privatezijn alleen toegankelijk vanuit de code binnen dezelfde klasse of structuur. - protected: Toegang is beperkt tot het omringende type of de afgeleide types daarvan. Leden gemarkeerd als
protectedzijn toegankelijk binnen hun klasse en in afgeleide klassen. - internal: Toegang is beperkt tot de huidige assembly (.dll of .exe). Leden gemarkeerd als
internalzijn toegankelijk vanaf elke plek binnen dezelfde assembly. - protected internal: Toegang is beperkt tot de huidige assembly of de afgeleide types van het omringende type in andere assemblies. Dit is een combinatie van
protectedeninternal. - private protected: Toegang is beperkt tot het omringende type of de afgeleide types daarvan alleen binnen dezelfde assembly. Dit is een combinatie van
privateenprotected.
// Voorbeeld van gebruik van toegangsmodifiers
public class MyClass
{
public int PublicField; // Toegankelijk vanaf elke plek
private int PrivateField; // Alleen toegankelijk binnen MyClass
protected int ProtectedField; // Toegankelijk binnen MyClass en in afgeleide klassen
internal int InternalField; // Toegankelijk binnen de huidige assembly
protected internal int ProtectedInternalField; // Toegankelijk binnen de huidige assembly OF in afgeleide klassen
private protected int PrivateProtectedField; // Toegankelijk binnen MyClass OF in afgeleide klassen in dezelfde assembly
void MyMethod()
{
PrivateField = 10; // OK
}
}
public class DerivedClass : MyClass
{
void DerivedMethod()
{
ProtectedField = 20; // OK
// PrivateField = 30; // Fout - privéveld is niet toegankelijk in erfenis
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; // Fout
// mc.ProtectedField = 5; // Fout
// mc.PrivateProtectedField = 6; // Fout
}
}