How to Check Object Types
Type Checking
Type describes data types. The .NET Runtime defined a type called System.Type, which is a representation of type in the System. Type stores the type information in a variable, property or field. Each and every class that has been defined in the system has a corresponding System.Type.
Determine type of a variable

All types in .Net are represented at runtime with an instance of System.Type. You will get all super classes, methods, properties fields, etc by calling the appropriate operations on System.Type. There are two basic ways to get System.Type object: call GetType on instance, or use the typreof operator on a type name.
typeof operator
The typeof operator is used to obtain the System.Type object for a type. It is often used as a parameter or as a variable or field. It is used to perform a compile time lookup i.e. given a symbol representing a Class name, retrieve the Type object for it.
C#System.Type type = typeof(int); Console.WriteLine(type);VB.Net
Dim type As System.Type = GetType(Integer) Console.WriteLine(type)
Output : System.Int32
GetType Method
GetType is a virtual method on Object, this means given an instance of a class, you can retrieve the exact runtime type of the current instance. Runtime type is the type of an object in memory. It is therefore a run-time concept. This is the type returned by the GetType() method.
C#int i=100; Console.WriteLine(i.GetType().FullName);VB.Net
Dim i As Integer = 100 Console.WriteLine(i.[GetType]().FullName)
Output : System.Int32
Checking for variable type
The following example will clear about the usage of GetType Method and typeof operator.
C# Source Codeusing System; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { int i = 100; Console.WriteLine(i.GetType().FullName); Console.WriteLine(typeof(int).Name); if (i.GetType() == typeof(int)) Console.WriteLine("Both are same"); else Console.WriteLine("Both are not same"); Console.ReadKey(); } } }
Final Output : Both are same
VB.Net Source CodeModule Module1 Sub Main() Dim i As Integer = 100 Console.WriteLine(i.[GetType]().FullName) Console.WriteLine(GetType(Integer).Name) If i.[GetType]() Is GetType(Integer) Then Console.WriteLine("Both are same") Else Console.WriteLine("Both are not same") End If Console.ReadKey() End Sub End Module
Final Output : Both are same
When and where to use GetType() or typeof
GetType() works at runtime and typeof() is a compile-time operator.

GetType() is a method you can call on individual objects, to get the execution-time type of the object. Use GetType() when you want to get the type at execution time. It is a method of the object class that can be used on an instance.
Use typeof when you want to get the type at compilation time. It is an operator to obtain a type known at compile-time (or at least a generic type parameter). The operand for typeof is always the name of a type or type parameter. It can't be a variable or anything like that. It is calculated at compile time and thus cannot be used on an instance, which is created at runtime.
In both cases the result is an object of the type System.Type containing meta-information on a type.
Example:using System; namespace ConsoleApplication1 { class Car { } class Ford : Car { } class Program { static Car newCar() { return new Ford(); } static void Main(string[] args) { Car c = newCar(); Console.WriteLine(typeof(Car)); //Output : CAR Console.WriteLine(c.GetType()); //Output : FORD Console.ReadKey(); } } }
In the above example, within the Main() method, you are dealing with instances of type Car; so, if you care about the declared type, you would use typeof(Car). However, the newCar() method actually returns an instance of a derived class, Ford, despite declaring the base class as the return type. If you want to find out about this runtime type, call GetType on the returned instance.
GetType and TypeOf confusion

From the above example, we should clear about the typeof operator is used when you want to get the Type instance representing a specific type. GetType() method gives the runtime type of the object on which it is called, which may be different from the declared type.
NEXT.....Aautoscroll multiline TextBox