Sobes.tech
Junior

C# да кирүү модификаторлору кандай?

sobes.tech AI

AIден жооп

C# тилинде төмөнкү кирүү модификаторлору бар:

  1. public: Кирүү чектелбейт. public деп белгиленген мүчөлөр бардык жерде жеткиликтүү, алардын камтыган тиби жеткиликтүү болсо.
  2. private: Кирүү алардын камтыган тибине чектелген. private деп белгиленген мүчөлөр гана ошол эле класс же структуранын коду менен жеткиликтүү.
  3. protected: Кирүү камтыган тиби же анын мураскорлорунун тиби менен чектелген. protected деп белгиленген мүчөлөр өзүнүн классынын жана мураскорлордун класстарында жеткиликтүү.
  4. internal: Кирүү учурдагы жыйынды менен чектелген (.dll же .exe). internal деп белгиленген мүчөлөр ошол эле жыйында кез келген жерден жеткиликтүү.
  5. protected internal: Кирүү учурдагы жыйынды менен же башка жыйындарда мураскорлордун тиби менен чектелген. Бул protected жана internal ке аралашмасы.
  6. 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; // Катуу
    }
}