What is the difference between a value type and a reference type in C#, and what do nullable reference types guarantee?
A value type stores its data inline wherever it is declared and is copied on every assignment, while a reference type stores a pointer to a heap object. Nullable reference types are compile-time flow analysis that emits warnings and is erased before execution, so they guarantee nothing at runtime.