rksoftware

Visual Studio とか C# とかが好きです

C# 2.0 以降の新機能の確認 - C# 7.2 - private protected アクセス修飾子

C# 2.0 以降の新機能を一つづつ確認していきます。
以前に一度行ったのですが、公式ドキュメント再編でリンク切れしているところを見つけてしまったので。今ならもっと簡潔なサンプルが欠けるところもあるだろうし、せっかくなので今もう一度確認して行きます。

private protected アクセス修飾子

 https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/keywords/private-protected
 同アセンブリ内の派生クラスでのみアクセスできる。
 次の例では二つの名前空間は別アセンブリにあるとします。

namespace ClassLibrary1
{
    // private protected メソッドを持つクラス
    public class Class1
    {
        private protected void MyMethod() {; }
    }

    // 同アセンブリ内のクラス
    public class Class3 : Class1
    {
        void MyMethod2() { base.MyMethod(); } // ← 同アセンブリ内の派生クラスは OK
    }
}
// 別アセンブリ
namespace AnotherAssemblyClass
{
    // 別アセンブリのクラス
    class AnotherAssemblyClass : ClassLibrary1.Class1
    {
        void MyMethod3()
        {
            // base.MyMethod(); ← これはエラー
        }
    }
}