Thursday, June 26, 2008

C# Puzzle No.10 (beginner)

Is it possible that class A has direct access to private members of class B?

No, of course not. This is against encapsulation - this is the most common answer. However, there is at least one case where this actually happens and is even very important feature of the language.

So the question is : in C#, under which circumstances class A has direct access to private members of another class B?

4 comments:

  1. Easy - all inner classes have access to private members of theirs "host" classes.

    ReplyDelete
  2. that's the correct answer.

    interestingly, however, I know quite a lot of people who are not aware of this feature of the language.

    ReplyDelete
  3. That`s really interresting. I was so confused whan I red this, that I decided to check it by my own - and yeah: "inner" class really see private field of the host class.

    By the way: the "inner" class I call "Nested" (I think this is proper name).

    ReplyDelete
  4. Yes Class A can access private variables of class B but only in following case:-

    If Class A is inner class of class B as well as it should friend class of B.

    //----check the code below-------------------

    class B
    {
    private int b1 = 5;

    class A : B
    {
    int myval()
    {
    return b1;
    }
    }
    }

    ReplyDelete