データクラスで private メンバーを呼び出せる場合もある。ということを知りました
具体的には以下の場合なんですけど、Person クラス定義の際に _Name
メンバーを private で宣言しています。Program クラス内で Person クラスを使う場合、Person クラスをインスタンス生成した後で、_Name
メンバーは private なので見えません。
が、Person クラス内で Person クラスをインスタンス生成して使う場合は、_Name
メンバーが見えるし扱えます。へー。
class Program { static void Main(string[] args) { var dummy = new Person(); dummy._Age = 12; // "アクセスできない保護レベルになっています" のコンパイルエラー } } class Person { private int _Age; private string _Name; public int GetAge() { var dummy = new Person(); dummy._Age = 12; // public フィールドorプロパティメンバーみたいに扱える return dummy._Age; } }
メソッド内で直接 private メンバーを呼び出して使うことはあっても、自クラスをインスタンス生成して、それ経由でメンバーを呼び出して使うという場面にあったことがない(か、滅多にないので忘れているか)ので、ほげーって感じ。