ECMA-334 C# Language Specification

17.10.1: Constructor initializers

All instance constructors (except those for class object) implicitly include an invocation of another instance constructor immediately before the constructor-body. The constructor to implicitly invoke is determined by the constructor-initializer:

If an instance constructor has no constructor initializer, a constructor initializer of the form base() is implicitly provided. [Note: Thus, an instance constructor declaration of the form
C(...) {...}  
is exactly equivalent to
C(...): base() {...}  
end note]

The scope of the parameters given by the formal-parameter-list of an instance constructor declaration includes the constructor initializer of that declaration. Thus, a constructor initializer is permitted to access the parameters of the constructor. [Example: For example:
class A  
{  
   public A(int x, int y) {}  
}  
class B: A  
{  
   public B(int x, int y): base(x + y, x - y) {}  
}  
end example]

An instance constructor initializer cannot access the instance being created. Therefore it is a compile-time error to reference this in an argument expression of the constructor initializer, as it is a compile-time error for an argument expression to reference any instance member through a simple-name.