Casting and Class conversion also see implicit data conversion
implicit means upcasting , e.g, int is casted to long data types.
explicit means downcast, where larger type is casted into smaller data type.

using System;
//csc implicit_explicit_3.cs
namespace try_imex
{
public class im_ex
{
public im_ex() { Console.WriteLine("Constructor Evoked");}
~im_ex() { Console.WriteLine("Destructor Evoked");}

	public double  test_implicit(int xn, double xd)
	{
	    //implicit conversion lower to higher with no data loss
            int i = xn;
	    double d = xd;
	    // An implicit conversion, no data will be lost.
	    Console.WriteLine("what is i := " + i + "  And What is d := " + d);
	    // converting explicitly
	    i = (int)d;
	    Console.WriteLine("what is i again:= " + i + "  And What is d again: " + d);
	    return(i + d);
	}



//class im_ex ends
}
class test
{
	public static void Main()
	{
	im_ex imex = new im_ex();
	Console.WriteLine("Enter an Intger");
	string str = Console.ReadLine();
	int nn = Int32.Parse(str);
	Console.WriteLine("Enter an Double");
 	str = Console.ReadLine();
	double dd = double.Parse(str);
	//calling the method
	imex.test_implicit(nn, dd);
	}
}
//namespace try_imex ends
}
Note the data lost due to casting; the code will not compile without casting double data type into integer data type.