Encapsulating a self referencing console application method
<p>If the method <code>iAmPrivate</code> is <code>Private</code> then how does the following execute it? If I try to run PrivateMethod's  myPrivateMethod it is encapsulated why doesn't the same apply to <code>iAmPrivate</code> ? </p>

<pre><code>class PrivateMethod {
    private int myPrivateMethod() {
        return 1;
    }
}

static void Main(string[] args) {

    Program myProgram = new Program();

    myProgram.iAmPrivate("private");
    myProgram.iAmPublic("public");

    PrivateMethod pm = new PrivateMethod();
    //Console.WriteLine("this won't run {0}", pm.myPrivateMethod);  //not possible          

    Console.WriteLine("press [enter] to exit");
    Console.ReadLine();
}

public void iAmPublic(string s) {
    Console.WriteLine("I am {0}", s);
}

private void iAmPrivate(string s) {
    Console.WriteLine("I am {0}", s);
}
</code></pre>
