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; // Катуу
}
}