There is something wrong with C# syntactic sugar in Unity, and i want to know the reason

I use unity 4.6.5, the target framework is unity 3.5 .net Subset Base Class Libraries.
the code is :

class A
{
	public class A1
	{
		public int id = 1;
		public bool isActive01;
		public bool isActive02;
		public bool isActive03;

		public bool isActive11 = false;
		public bool isActive12 = false;
		public bool isActive13 = false;
		public bool isActive21 = true;
		public bool isActive22 = true;
		public bool isActive23 = true;

	}
	public int index;
}

and

  A.A1 a1 = new A.A1(){
    	id = 2,
    
    	isActive02 = false,	
    	isActive03 = true,	
    
    	isActive12 = false,	
    	isActive13 = true,	
    
    	isActive22 = false,	
    	isActive23 = true,	
    	
    };

but the result is:

a1.id ===>2
isActive01 ==> false,
isActive02 ==> false,	
isActive03 ==> true,	
isActive11 ==> false,	
isActive12 ==> false,	
isActive13 ==> true,	
isActive21 ==> true,	
**isActive22 ==> true,**	
isActive23 ==> true,

and when I use visual studio C# ConsoleApplication, the targetframework:.Net framework 4 Client Profile ,
the result is:

a1.id ===>2
isActive01 ==> false,
isActive02 ==> false,	
isActive03 ==> true,	
isActive11 ==> false,	
isActive12 ==> false,	
isActive13 ==> true,	
isActive21 ==> true,	
**isActive22 ==> false,**	
isActive23 ==> true,	

I want to know why

A.A1 a1 = new A.A1(){ id = 2,

isActive02 = false,
isActive03 = true,
isActive12 = false,
isActive13 = true,
isActive22 = false,
isActive22 = true, //here is the mistake in above line you write 22 = false and than you make it true

};