The C# nullable types - Nullable<T>
- override Object.Equals(object) method, as well as overload equality operator (==). The Object.Equals() is a virtual method that accepts any reference type argument. On the other hand, a call to overloaded equality operator (==) goes through strict type checking of arguments at compile time. Therefore, the equality operator (==) overloaded by Nullable< T > can only be applied on operands of type Nullable< T > or T.
This code defines some nullable types, and boxes them to create reference type objects:
// A nullable-int
int? ni = 10;
// box ni
object oi = ni;
// box int 10
object oten = 10;
// A null-nullable-int
int? nni = null;
// box nni
object onni = nni;
Which one of following equality checks on above data instances would return false?