C#.NET objects and memory model — estimate the size of an instance (ignoring object header). namespace CuriousTabConsoleApplication { class Baseclass { private int i; protected int j; public int k; } class Derived : Baseclass { private int x; protected int y; public int z; } class MyProgram { static void Main(string[] args) { Derived d = new Derived(); } } } What is the size contribution of the fields in one <code>Derived</code> object if each <code>int</code> is 4 bytes (ignore header/alignment)?

Difficulty: Easy

Correct Answer: 24 bytes

Explanation:


Introduction / Context:
The question focuses on field layout through inheritance and simple size estimation for primitive fields in C#. It intentionally asks for the size contributed by the fields (not the true runtime size including headers/padding).



Given Data / Assumptions:

  • All six fields across base and derived are int.
  • Each int occupies 4 bytes.
  • We ignore CLR object header, method table pointer, and padding/alignment for this estimate, as directed by the question.


Concept / Approach:
A derived object contains the instance fields of its base classes plus its own fields. Access modifiers (private/protected/public) do not change whether the storage exists; they only change visibility.



Step-by-Step Solution:

Baseclass fields: i, j, k → 3 * 4 = 12 bytes.Derived fields: x, y, z → 3 * 4 = 12 bytes.Total field bytes in a Derived object: 12 + 12 = 24 bytes.


Verification / Alternative check:
Reflect over the type and count instance fields; you will find six int fields. Tools like ILDASM or reflection confirm field presence irrespective of access level.



Why Other Options Are Wrong:
12 or 16 bytes ignore some fields; 20 bytes is a miscount; 10 bytes is not a multiple of 4 and physically impossible for six ints.



Common Pitfalls:
Confusing accessibility with allocation, and forgetting base-class fields are part of the derived instance layout.



Final Answer:
24 bytes

More Questions from Inheritance

Discussion & Comments

No comments yet. Be the first to comment!
Join Discussion