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 } }