
Writing
So You Think You Know C#? Generics Under the Hood
.NET generics retain runtime type arguments. Typed lists avoid boxing value-type elements, while CLR specialization and code sharing preserve distinct types.

Topic
The distinction between variables containing values directly and variables containing references to objects. Field storage, assignment and copying determine how values and shared objects behave.
3 pages

Writing
.NET generics retain runtime type arguments. Typed lists avoid boxing value-type elements, while CLR specialization and code sharing preserve distinct types.

Writing
C# passes arguments by value by default. Integer, string and object examples explain what gets copied, how ref works and which changes reach the caller.

Writing
.NET allocation costs follow what gets stored and copied. Structs, classes, arrays and strings explain object layout, references and garbage collection.