Вы можете выделить свою общую логику в закрытый метод, например с именем Initialize
, который вызывается из обоих конструкторов.
Из-за того, что вы хотите выполнить проверку аргументов, вы не можете прибегнуть к цепочке конструктора.
Пример:
public Point2D(double x, double y)
{
// Contracts
Initialize(x, y);
}
public Point2D(Point2D point)
{
if (point == null)
throw new ArgumentNullException("point");
// Contracts
Initialize(point.X, point.Y);
}
private void Initialize(double x, double y)
{
X = x;
Y = y;
}