C# パッケージ

 
C# はオブジェクト指向プログラミング言語であり、カプセル化、継承、ポリモーフィズムという 3 つの主要な機能を備えています。いわゆるカプセル化とは、1 つ以上の項目 (関数) をクラスと呼ばれる単位にまとめることであり、必要に応じてアクセス修飾子を使用してクラス内のメンバーのスコープと可視性を設定できます。 C# のアクセス修飾子は次のとおりです。

 

  • public: public、すべてのオブジェクトにアクセスできますが、名前空間を参照する必要があります。
  • private: プライベート、クラス内でのみアクセス可能。
  • external: 内部、同じアセンブリのオブジェクトにアクセスでき、アセンブリは名前空間です。
  • protected: 保護されており、クラス内、またはクラスの親クラスとサブクラス内でアクセス可能です。
  • protected external: protected と external の和集合。いずれかに一致する場合にアクセスできます。

1.公共

クラス内の public アクセス修飾子で変更されたメンバー変数またはメンバー関数は、他の関数やオブジェクトでも使用でき、クラスの外部からクラス内のパブリック メンバー (public で変更されたクラス メンバー) にアクセスできます。例を示してみましょう:

 using System;

namespace it-kiso.com
{
    class Demo
    {
        static void Main(string[] args)
        {
            Rectangle Obj = new Rectangle();
            Obj.width = 5.5;
            Obj.length = 3;
            Obj.Display();
            Console.ReadLine();
        }
    }

    class Rectangle
    {
        // メンバ変数
        public double width, length;

        public double GetArea()
        {
            return width * length;
        }

        public void Display()
        {
            Console.WriteLine("長方形の長さ:{0}", length);
            Console.WriteLine("長方形の幅:{0}", width);
            Console.WriteLine("長方形の面積:{0}", GetArea());
        }
    }
} 

操作の結果は次のようになります。

長方形の長さ:3
長方形の幅:5.5
長方形の面積:16.5

上記の例では、メンバー変数 length と width は両方とも public で変更されているため、Main 関数の Rectangle クラスのインスタンスを使用してアクセスできます。

2.プライベート

クラス内の private アクセス修飾子で変更されたメンバー変数またはメンバー関数には、他の関数またはオブジェクトからアクセスできません。クラスのインスタンスであっても、このクラスのプライベート メンバーにはアクセスできません。同じクラスに属する関数のみがこのクラスにアクセスできます。メンバー。

例を示してみましょう:

 using System;

namespace it-kiso.com
{
    class Demo
    {
        static void Main(string[] args){
            Rectangle Obj = new Rectangle();
            Obj.AcceptDetails();
            Obj.Display();
            Console.ReadLine();
        }
    }
    class Rectangle
    {
        // メンバ変数
        private double width, length;

        public void AcceptDetails(){
            Console.WriteLine("長方形の長さを入力してください: ");
            length = Convert.ToDouble(Console.ReadLine());
            Console.WriteLine("長方形の幅を入力してください: ");
            width = Convert.ToDouble(Console.ReadLine());
        }
        public double GetArea(){
            return width * length;
        }
        public void Display(){
            Console.WriteLine("長方形の長さ:{0}", length);
            Console.WriteLine("長方形の幅:{0}", width);
            Console.WriteLine("長方形の面積:{0}", GetArea());
        }
    }
} 

操作の結果は次のようになります。

長方形の長さを入力してください:
12.3
長方形の幅を入力してください:
23.4
長方形の長さ:12.3
長方形の幅:23.4
長方形の面積:287.82

上記の例では、メンバー変数 length と width は private で修飾されているため、Demo クラスの Main 関数を通じてアクセスすることはできませんが、Rectangle クラスのメンバー関数 AcceptDetails() および Display() を通じてのみアクセスできます。 。また、Rectangle のメンバ関数 AcceptDetails() と Display() は public で変更されているため、Rectangle クラスのインスタンス Obj を利用して呼び出すことができます。

3.保護されている

クラス内の protected アクセス修飾子で変更されたメンバー変数とメンバー関数は、そのサブクラスでアクセスできます。つまり、基本クラス (親クラス) で protected アクセス修飾子で変更されたメンバー変数とメンバー関数は、そのサブクラスでアクセスできます。クラス アクセス。継承が容易になります。継承については、次の章で詳しく紹介します。

4.内部

内部アクセス修飾子で修飾されたクラス内のメンバー変数とメンバー関数は、現在のアセンブリ内の他の関数またはオブジェクトで使用できます。つまり、internal で変更されたメンバーは、同じ名前空間内の任意のクラスまたはメソッドからアクセスできます。

例を示してみましょう:

 using System;

namespace it-kiso.com
{
    class Demo
    {
        static void Main(string[] args){
            Rectangle Obj = new Rectangle();
            Obj.length = 33.3;
            Obj.width = 22.2;
            Obj.Display();
            Console.ReadLine();
        }
    }
    class Rectangle
    {
        // メンバー変数
        internal double width, length;

        double GetArea(){
            return width * length;
        }
        public void Display(){
            Console.WriteLine("長方形の長さ:{0}", length);
            Console.WriteLine("長方形の幅:{0}", width);
            Console.WriteLine("長方形の面積:{0}", GetArea());
        }
    }
} 

操作の結果は次のようになります。

長方形の長さ:33.3
長方形の幅:22.2
長方形の面積:739.26

上記の例では、アクセス修飾子のないメンバー関数 GetArea() はデフォルトでプライベートです。

5. 内部の保護

クラス内の保護された内部アクセス修飾子で変更されたメンバーは、このクラス、派生クラス、またはこのクラスを含むアセンブリ (using を使用して導入) でアクセスでき、このメソッドは継承の実装時にも使用されます。

「 C# パッケージ」についてわかりやすく解説!絶対に観るべきベスト2動画

How to create your own nuget package using Visual Studio 2022
Create NuGet packages with Visual Studio | Install and use NuGet package | C# .Net Core