Data_type_2.htm
Also read about implicit and explicit key words
  • Value type
    • int n; n = 10;
      • Conversions
        • Implicit (automatic conversion)
          • int iVal = 34; 
            long lVal  = iVal;
        • Explicit (forced conversion)
          • long longVar =  123456789; 
            int IntVar = (int) longVar;
        • Casting ( force conversion)
          • Boxing and Unboxing---whaaaaaa?

            int i = 123; // a value type
            object o = i // casting to object, also called Boxing
            int j = (int) o; //un-boxing

  • Reference type
    • someclass ss = new someclass();
    • Casting
short Name .NET Class Type Width Range (bits)
object Object Base type of all other types    
byte byte Unsigned integer 8 0 to 255
sbyte sbyte Signed integer 8 -128 to 127
int Int32 Signed integer 32 -2,147,483,648 to 2,147,483,647
uint uint32 Unsigned integer 32 0 to 4294967295
short Int16 Signed integer 16 -32,768 to 32,767
ushort uint16 Unsigned integer 16 0 to 65535
long Int64 Signed integer 64 -922337203685477508 to 922337203685477507
ulong uint64 Unsigned integer 64 0 to 18446744073709551615
float Single Single-precision floating point type 32 -3.402823e38 to 3.402823e38
double double double-precision floating point type 64 -1.79769313486232e308 to 1.79769313486232e308
char char A single Unicode character 16 Unicode symbols used in text
bool Boolean Logical Boolean type 8 True or false
string String A sequence of characters    
decimal decimal Precise fractional or integral type that can represent decimal numbers with 29 significant digits 128 ±1.0 × 10e−28 to ±7.9 × 10e28

Note : C# also adheres to all primitive data types as objects, making it possible to call or cast an object method  a primitive data type.
 

   
The following is a list of implicit conversions between
.Net DataTypes
Source Target Data Types
byte short, ushort, int, uint, long, ulong, float, double, or decimal
sbyte short, int, long, float, double, or decimal
Int long, float, double, or decimal
uint long, ulong, float, double, or decimal
short int, long, float, double, or decimal
ushort int, uint, long, ulong, float, double, or decimal
long float, double, or decimal
ulong float, double, or decimal
float double
char ushort, int, uint, long, ulong, float, double, or decimal

You cast expressions that you want to explicitly convert using the same syntax as Java:

The following table lists explicit conversions.
.Net Data-Types
Source Data Type Target Data Types
byte sbyte or char
sbyte byte, ushort, uint, ulong, or char
Int sbyte, byte, short, ushort, uint, ulong, or char
uint sbyte, byte, short, ushort, int, or char
short sbyte, byte, ushort, uint, ulong, or char
ushort sbyte, byte, short, or char
long sbyte, byte, short, ushort, int, uint, ulong, or char
ulong sbyte, byte, short, ushort, int, uint, long, or char
float sbyte, byte, short, ushort, int, uint, long, ulong, char, or decimal
double sbyte, byte, short, ushort, int, uint, long, ulong, char, float, or decimal
char sbyte, byte, or short
decimal sbyte, byte, short, ushort, int, uint, long, ulong, char, float, or double