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; // OK
}
}
public class DerivedClass : MyClass
{
void DerivedMethod()
{
ProtectedField = 20; // OK
// PrivateField = 30; // Помилка - приватне поле недоступне у нащадку
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; // Помилка
// mc.ProtectedField = 5; // Помилка
// mc.PrivateProtectedField = 6; // Помилка
}
}