Initialization of Extended class without too much overhead?
Those lines are managing the properties of A, so they belong in A.  I've added a protected copy constructor and used constructor chaining to solve your issue:

public class A
{
  public int [] prop1 ;
  public string prop2 ;
  public string prop3 ;

  public A() {}

  protected A(A a)  //copy constructor
  {
    this.prop1 = a.prop1 ;  //review: should this reference be copied, or a new copy made?
    this.prop2 = a.prop2 ;
    this.prop3 = a.prop3 ;
  }
}

public class B : A
{
  public Dictionary &lt;int, int&gt; prop4 ;

  public B (int [] keys, A a) : base(a)  //constructor chaining
  {
    prop4 = new Dictionary &lt;int, int&gt; () ;
    if (keys.Length == a.prop1.Length )
    {
      for (int i = 0 ; i &lt; keys.Length ; i++ )
      {
        prop4.Add (keys[i], a.prop1[i]) ;
      }
    }
    else
    {
      throw new Exception ("something wrong") ;
    }           
  }
}