Junior
Kādi ir piekļuves modifikatori C#?
sobes.tech AI
Atbilde no AI
C# valodā ir šādi piekļuves modifikatori:
- public: Piekļuve nav ierobežota.
publicatzīmētie locekļi ir pieejami no jebkuras vietas, kur ir pieejams to saturošais tips. - private: Piekļuve ir ierobežota ar to saturošo tipu.
privateatzīmētie locekļi ir pieejami tikai no koda tajā pašā klasē vai struktūrā. - protected: Piekļuve ir ierobežota ar saturošo tipu vai tipu, kas ir no tā atvasināts.
protectedatzīmētie locekļi ir pieejami savā klasē un atvasinātajās klasēs. - internal: Piekļuve ir ierobežota ar pašreizējo būvējumu (.dll vai .exe).
internalatzīmētie locekļi ir pieejami no jebkuras vietas tajā pašā būvējuma daļā. - protected internal: Piekļuve ir ierobežota ar pašreizējo būvējumu vai tipu, kas ir no tā atvasināts citās būvējuma daļās. Tas ir
protecteduninternalkombinācija. - private protected: Piekļuve ir ierobežota ar saturošo tipu vai tipu, kas ir no tā atvasināts, tikai tajā pašā būvējuma daļā. Tas ir
privateunprotectedkombinācija.
// Piekļuves modifikatoru piemērs
public class MyClass
{
public int PublicField; // Pieejams no jebkuras vietas
private int PrivateField; // Pieejams tikai MyClass iekšienē
protected int ProtectedField; // Pieejams MyClass un atvasinātajās klasēs
internal int InternalField; // Pieejams pašreizējā būvējuma daļā
protected internal int ProtectedInternalField; // Pieejams pašreizējā būvējuma daļā VAI atvasinātajās klasēs
private protected int PrivateProtectedField; // Pieejams tikai MyClass un atvasinātajās klasēs tajā pašā būvējuma daļā
void MyMethod()
{
PrivateField = 10; // Labi
}
}
public class DerivedClass : MyClass
{
void DerivedMethod()
{
ProtectedField = 20; // Labi
// PrivateField = 30; // Kļūda - privāts lauks nav pieejams mantotajā klasē
ProtectedInternalField = 40; // Labi
PrivateProtectedField = 50; // Labi
}
}
public class AnotherClassInSameAssembly
{
void AnotherMethod()
{
MyClass mc = new MyClass();
mc.PublicField = 1; // Labi
mc.InternalField = 2; // Labi
mc.ProtectedInternalField = 3; // Labi
// mc.PrivateField = 4; // Kļūda
// mc.ProtectedField = 5; // Kļūda
// mc.PrivateProtectedField = 6; // Kļūda
}
}