toma sobreescritura sobrecarga programacion para orientada operadores objetos ninguna metodos metodo herencia ejemplos ejemplo constructores argumentos c# constructor constructor-overloading

sobreescritura - Sobrecarga de constructores C#



sobrecarga de operadores (3)

Cómo puedo usar constructores en C # de esta manera:

public Point2D(double x, double y) { // ... Contracts ... X = x; Y = y; } public Point2D(Point2D point) { if (point == null) ArgumentNullException("point"); Contract.EndContractsBlock(); this(point.X, point.Y); }

Lo necesito para no copiar el código de otro constructor ...


Puede factorizar su lógica común a un método privado, por ejemplo llamado Initialize que recibe llamadas de ambos constructores.

Debido al hecho de que desea realizar la validación de argumentos, no puede recurrir al encadenamiento de constructores.

Ejemplo:

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; }


Tal vez tu clase no está completa. Personalmente, uso una función privada init () con todos mis constructores sobrecargados.

class Point2D { double X, Y; public Point2D(double x, double y) { init(x, y); } public Point2D(Point2D point) { if (point == null) throw new ArgumentNullException("point"); init(point.X, point.Y); } void init(double x, double y) { // ... Contracts ... X = x; Y = y; } }


public Point2D(Point2D point) : this(point.X, point.Y) { }