Explicit casting from object type with different datatype - Exceptional case in C#

The following code (Example 2) will throw exception because the object type is meant for only "LONG" type.
So, when you convert it to a string, exception will be raised.

Forget code explains this with two examples.
First one explains the proper explicit casting with long type.
Second one is the exceptional case.

Example 1:

using System;
using System.Text;

namespace forgetCode
{

    class program
    {
        public static void Main()
        {
            // Assign long and then cast it to an object implictly.
            long  value1 = 124124;
            object value2 = value1;

            // Explicitly cast to long again from the object type.
            //Proper casting
            long value3 = (long)value2;
            Console.WriteLine(value3);

        }
    }
}


Output:
124124



Example 2:

using System;
using System.Text;

namespace forgetCode
{

    class program
    {
        public static void Main()
        {
            // Assign long and then cast it to an object implictly.
            long  value1 = 124124;
            object value2 = value1;

            // Explicitly cast to string from the object type.
            //Error case
            // Unable to convert from "Long object type" to string
            string value3 = (string)value2;
            Console.WriteLine(value3);

        }
    }
}


Output:

Unhandled Exception: System.InvalidCastException: Unable to cast object of type
'System.Int64' to type 'System.String' at forgetCode.program.Main()