C# Конструктор

2075 / 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);