2070 / C# / Класи / Конструктор

 

Метод який називається так само як клас, запускається першою і ініціалізує поля класу

 

Конструктор С1 працює швидше за С2
class C1 {
  int a;
  int b;

  public C1(int a, int b) // добре
  { 
    this.a = a; 
    this.b = b; 
  } 
}

C1 c = new C1(1, 2);

----------------------

class C2 {
  public int a;
  public int b;

  public C2() { }
}

C2 c = new C2();

c.a = 1; // повільно
c.b = 2; // повільно
Викликати конструктор базового класу 
class A : B
{
  public string ID { get; set; }
  public A(string name, string id) : base(name)
  {
    ID = id;
  }
}

 
Викликати інший конструктор
class A
{
  public A() : this(-1, "") { }
  public A(int weight, string name) { }
}

Конструктор може бути приватним - аби інші класи не могли створювати об'єкти

 
Конструктор копіювання
// два об'єкти матимуть одну і туж адресу
Worker w2 = w1;

// два різних об'єкти
public Point(Point p) {
  x = p.x;
  y = p.y;
}

Point p2 = new Point(p1);