Title: CSharp / Nullability

Q: What are the three operators in C# that operate on null references?
A: - Null-Coalescing Operator (??)
- Null-Coalescing Assignment Operator (??=)
- Null-Conditional Operator (?.)

Q: Explain how the null-coalescing(??) operator works?
A: - If the lefthand expression is non-null, then the righthand expression is never evaluated.
- If the lefthand expression is null, then the righthand expression is evaluated.

Q: How does the Null-Coalescing Assignment Operator(??=) work?
A: If the operand to the left is null, the right operand is assigned to the left operand.

Q: What feature does the Null-Conditional operator(?.) provide?
A: If the operator on the left is null, the expression evaluates to null instead of throwing a NullReferenceException.

Q: Does null-conditional operator also work with indexers?
A: Yes.

Q: Explain the feature Nullable Reference Types?
A: Nullable Reference Types make reference types non-nullable.
By default, Reference types are nullable.

Q: How can you enable the Nullable Reference Type feature in a C# project?
A: You can enable this feature by adding `<Nullable>enable<Nullable>` to the .csproj file.

Q: What happens when you enable the Nullable Reference Type feature?
A: - All reference types are treated as nullable.
- The compiler generates a warning if a line of code risks throwing a NullReferenceException.

Q: When would you use a null-forgiving operator(!)?
A: If you know for sure that an object cannot be null, you can use the null forgiving(!) operator at the end of the object to remove the nullable reference type warning.

Q: Explain the term - nullable annotation context?
A: All reference types are treated as non-nullable.

Q: How do you enable nullable annotation context in a C# file?
A: `#nullable enable annotations`

Q: What does enabling the nullable warning context do?
A: Generates a warning when a line of code risks throwing a `NullReference​Excep⁠tion`.

Q: How do you enable nullable warning context in a `C#`` file?
A: `#nullable enable warnings`

Q: Why would you enable only the Nullable Annotation Context?
A: It is a good first step towards introducing nullable reference types to a legacy codebase.