c#有如下代码: 
class A 

public void F() 

Console.WriteLine("A.F"); 

public virtual void G() 

Console.WriteLine("A.G"); 


class B:A 

new public void F() 

Console.WriteLine("B.F"); 

public override void G() 

Console.WriteLine("B.G"); 
} } 
class Test 

static void Main() 

B b=new B(); 
A a=b; 
a.F(); 
b.F(); 
a.G(); 
b.G(); 


想问一下, 
A a=b; 
这行代码是否等价于: 
A a= new A(); 
a=b; 
为什么会这样,能详细的解释一下吗?