unity study

Unityでサクッとモックを作れるようになることを目指して、基本的なテクニックを抑えていく過程を残すブログのつもりだったけど、今はただ自分のトラブルシューティングメモになってるブログ

C#のprotectedの扱いはJavaとちょっと違うんだな

ちょっとハマったのでメモ。
Javaのprotectedと違って、C#のは同一クラスの別インスタンスからアクセスできないみたい。
そういう場合にinternalを使う。
「アクセスは現在のアセンブリに制限されます。」って説明がイミフだったけど、そういうことか。

class Foo
{
    private int m1;
    protected int m2;
    protected internal int m3;
}

class Var : Foo
{
    void CopyFrom(Foo f)
    {
        m1 = f.m1; // これは当然NG
        m2 = f.m2; // NG m2はアクセスできるけど、f.m2はアクセスできない
        m3 = f.m3; // OK
    }
}