Type Conversion in C#

Type Conversion

Conversion of one type of variable into another type of variable is called casting, as in the following:

int i = 10;
float k = 20.0f;

k = i; // it is possible
i = k; // not possible
i = (int)k; //again possible

Error in Casting



I am dividing this article into two parts, in the first part I'll explain why we can't convert an int into a short directly but the opposite is possible and in the second part I'll explain the other data type, float, by comparing it with int.

Part: 1 [int VS short]

As I said above, an int cannot be directly converted into a short but the opposite is possible. But I will tell you in this article how can you convert an int into a short too.

Explanation

int i = 10;
short j = 5;

i = j; // possible
j = i; // not possible

Now the question is how to convert int into short, so here we go-

int i = 10;
short j = 5;

i = j; // possible
j = (short)i; // now possible

Example

Snippet: 1.1

using System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Text;
namespace
Hello_Word
{

   class
Program
   {

      static
void Main(string[] args)
      {

         int
i = 10;
         short
j = 5;
         float
k = 20.0f;
         i = j;
         j = (
short)i;
         Console
.WriteLine("value is: " + j);
         k = i;

         // i = k;

         Console
.ReadLine();
      }
   }
}



Now I will show you what changes occur whenever we convert a large data type into a smaller data type.
(In this case it is for an int to a short.)

Snippet: 1.2

using System;  
using
System.Collections.Generic;
using
System.Linq;
using
System.Text;
namespace
Hello_Word
{

   class
Program
   {

      static
void Main(string[] args)
      {

         int
i = 100000;
         short
j = 5;
         float
k = 20.0f;
         // i = j;

         j = (
short)i;
         Console
.WriteLine("value is: " + j);
         k = i;

         // i = k;

         Console
.ReadLine();
      }
   }
}


Reason

This variation in input is due to the size of the int and short data types. An int size is 32 bits while a short is only 16 bits. Thus the input in the first case is 5 and in the second case due to the limited size, the short loses some memory from the data and shows 31072 as output.

Part: 2 [int VS float]

Type conversion between int and float data types.

Explanation

int i = 10;
float k = 20.0f;

k = i; // possible
i = k; // not possible

Now the question is, how to convert an int into a short, so here we go.

int i = 10;
float
k = 20.0f;

k = i; // possible
i = (int)k; // possible

Example

Snippet: 2.1

using System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Text;
namespace
Hello_Word
{

   class
Program
   {

      static
void Main(string[] args)
      {

         int
i = 10;
         // short j = 5;

         float
k = 20.0f;
         k = i;
         i = (
int)k;
         Console
.WriteLine("value is: " + i);
         Console
.ReadLine();
      }
   }
}


Snippet: 2.2

using System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Text;
namespace
Hello_Word
{

   class
Program
   {

      static
void Main(string[] args)
      {

         int
i = 10;
         // short j = 5;

         float
k = 20.0f;
         // k = i;

         i = (
int)k;
         Console
.WriteLine("value is: " + i);
         Console
.ReadLine();
      }
   }
}


Reason

This variation in input is due to the size of the int and float data types. An int size is 32 bits while a float is large in comparison to an int (64 bits). Thus the input in the first case is 10 and in the second case it's showing 20 as the output.