2017年5月22日月曜日

C# アクセス修飾子

C# のアクセス修飾子について、それぞれの意味を確認していきます。

public:

最も制限のない状態です。
public で修飾されたメンバーは、そのメンバーを持つクラスはもちろん、継承クラス、外部アセンブリからアクセスすることができます。
public で修飾された型は外部アセンブリからアクセスすることができます。

例えば、ClassLibrary1 というアセンブリに MyClass という public クラスを定義します。このクラスには public プロパティとして MyString を定義しています。
同じアセンブリ内の、MyOtherClass というクラスからも、MyClass の MyString にアクセスすることができます。

using System;

namespace ClassLibrary1
{
    public class MyClass
    {
        public MyClass()
        {
            this.MyString = "This is my public string.";
            this.MyPrivateString = "This is my private string";
        }

        public string MyString { get; set; }

        private string MyPrivateString { get; set; }
    }

    public class MyOtherClass
    {
        public MyOtherClass()
        {
            MyClass myClassX = new MyClass();
            Console.WriteLine(myClassX.MyString);
        }
    }
}



続いて、AccessModifierTest アセンブリの Form1 クラスから MyClass クラスのインスタンスを生成し、MyString プロパティにアクセスしています。このように、public でクラスを修飾すると外部アセンブリからもアクセスが可能です。

namespace AccessModifierTest
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            MyClass myClass1 = new MyClass();
            Console.WriteLine(myClass1.MyString);
        }
    }
}

(以下、作成中です。)
private

protected

internal

protected internal

0 件のコメント:

コメントを投稿