I Read this StackOverflow Question And i read this blog here
I couldn't understand completely. Here are my doubts.
 struct S
{
    private int x;
    private int y;
    public int X { get { return x; } }
    public int Y { get { return y; } }
    public S(int x, int y, bool panic)
    {          
        this.x = x;
        this.y = y;
        if (panic)
            throw new Exception();
    }
}
static class P
{
    static void Main()
    {
        S s = default(S);
        try
        {                
            s = new S(1, 2, false);
            Console.WriteLine("{0}, {1}", s.X, s.Y);
            s = new S(3, 4, true);
        }
        catch
        {
            Console.WriteLine("{0}, {1}", s.X, s.Y);
        }
        Console.ReadLine();
    }
}
Here before throwing exception i assigned the values. But why is it not assigning to the object s i mean in the console i written in the catch block, says (1,2).
Because it is initialized again in the second line , and called the constructor with (3,4). so how it is (1,2).
Somehow i cant understand this.
And also,
Therefore, using the new operator on a value type allocates no additional memory. Rather, the memory already allocated for the value is used.
In that blog , the answer is No.
If that is the case, is it initializing with new memory. If so, how comes (1,2) is coming in the catch block.
As i am new to C# i am not able understand this.
I know its silly doubt, but someone please help me in understanding this concept.
 
     
     
     
     
     
    