Constructors in C#

ภูริณัฐ วงษ์นาคเพ็ชร์ 650710576

Constructor คืออะไร?

Constructor คือเมธอดพิเศษในคลาสของภาษาโปรแกรม ที่ทำงานเมื่อมีการสร้างอินสแตนซ์ของคลาสนั้นๆ ขึ้นมา ภาษา C# จะใช้ Constructor เพื่อตั้งเป็นค่าเริ่มต้นของออบเจ็คต์ ซึ่งรวมถึงการกำหนดค่าของตัวแปรในคลาสหรือการทำบางสิ่งก่อนการใช้งาน


KEY POINT CONSTRUCTOR C#

  • constructor ของคลาสจะต้องเป็นชื่อเดียวกับชื่อคลาสที่เราสร้าง

  • constructor ไม่มีการคืนค่าชนิดใดๆ รวมถึง void

  • คลาสทุกคลาสที่เราสร้างขึ้นมาจะต้องมี constructor อย่างน้อย 1 ตัวเสมอ

  • คลาสหนึ่งสามารถมี constructor จำนวนเท่าใดก็ได้

  • ภายในคลาส สามารถสร้าง constructor แบบคงที่ได้เพียงตัวเดียวเท่านั้น

  • static constructor ไม่สามารถรับพารามิเตอร์ได้


Types of Constructors

  1. Default Constructor

  2. Parameterized Constructor

  3. Copy Constructor

  4. Private Constructor

  5. Static Constructor


Example

Example
class Person {
    String name;
    int age;

    // Constructor
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public static void main(String[] args) {
        Person person = new Person("Alice", 30);
        System.out.println("Name: " + person.name + ", Age: " + person.age);
    }
}

จากตัวอย่าง บรรทัดที่ 6-9 จะเป็นการสร้าง Constructor คลาส Person มี Constructor ที่ใช้กำหนดค่าเริ่มต้นให้กับคุณสมบัติ Name และ Age เมื่อมีการสร้างอ็อบเจกต์ขึ้นมาเเละไม่มีการคืนค่า

การเรียกใช้ Constructor

เมื่อทำการสร้างอินสแตนซ์ของ Person โดยการใช้

Person person = new Person("Alice", 30);

Constructor จะถูกเรียกใช้ และค่าที่ถูกส่งเข้าไป (Alice", 30) จะถูกตั้งค่าให้กับตัวแปร Name และ Age ตามลำดับ


เปรียบเทียบ Constructor ใน C#/Java /C/Python

class Car
{
  public string model;
  public string color;
  public int year;

  // Constructor
  public Car(string modelName, string modelColor, int modelYear)
  {
    model = modelName;
    color = modelColor;
    year = modelYear;
  }

  static void Main(string[] args)
  {
    Car Ford = new Car("Mustang", "Red", 1969);
    Console.WriteLine(Ford.color + " " + Ford.year + " " + Ford.model);
  }
}
  • C# และ Java จะมีการสร้าง constructor ที่มีชื่อเดียวกับ Class เหมือนกันไม่มีการคืนค่าและใช้สำหรับกำหนดค่าตัวแปรของออบเจ็กต์เมื่อมีการสร้างออบเจ็กต์ขึ้นมาใหม่ และสนับสนุนการโอเวอร์โหลด และ มีการจัดการ garbage collection ที่จัดการหน่วยความจำอัตโนมัติ

  • C ไม่สามารถสร้าง constructor เนื่องจากไม่ได้รองรับ OOP เพราะภาษา C นั้นเป็นการเขียนโปรแกรมเชิงโครงสร้าง (Procedural programming) แต่สามารถเรียกใช้ฟังก์ชัน struct เพื่อสร้างและกำหนดค่าตัวแปรได้

struct Car createCar(char* modelName, char* modelColor, int modelYear) {
    struct Car car;
    strcpy(car.model, modelName);
    strcpy(car.color, modelColor);
    car.year = modelYear;
    return car;
}
  • Python สามารถสร้าง constructor ทำได้โดยใช้เมธอดพิเศษ __init__ ซึ่งจะถูกเรียกใช้ทุกครั้งเมื่อสร้างออบเจ็กต์ใหม่

    ข้อสังเกตุ Python ไม่จำเป็นต้องประกาศชนิดของตัวแปรเนื่องจากเป็น Dynamic typing

def __init__(self, model, color, year):
        self.model = model
        self.color = color
        self.year = year


Video Presentation

Slide Presentation

Reference

ข้อมูลและการทำงานของ constructor in c#

เปรียบเทียบตัวอย่างโค้ด

Last updated