
Explanation
Target 1:

Target 2:

Target 3:

Target 4:

Note:
* target 2:
GetType() is a method you call on individual objects, to get the execution-time type of the object.
Incorrect: typeof is an operator to obtain a type known at compile-time (or at least a generic type parameter).
The operand of typeof is always the name of a type or type parameter - never an expression with a value (e.g. a variable). See the C# language specification for more details.
Reference: What is the difference of getting Type by using GetType() and typeof()?
http://stackoverflow.com/questions/11312111/when-and-where-to-use-gettype-or-typeof