Part1 -> Section2 -> Classes -> 003. Constructors & Destructors

     Constructors คืออะไร อธิบายง่ายๆเลย Constructor คือ method นี่แหละ แต่เป็น method แบบพิเศษที่จะใช้สำหรับการ instantiate class (การสร้าง object ของ class) เท่านั้น, Constructor จะมีชื่อเดียวกับ class และจะไม่มี return type ลองดูตัวอย่างด้านล่าง



ตัวอย่างนี้คือ method ปกติ

public string Pen

ส่วนนี้คือตัวอย่าง Constructor ของ class Pen

public Pen

Constructor โดยปกติแล้วเราจะใช้สำหรับการ initial ค่าให้ field ของ class ซึ่งในหนึ่ง class สามารถมี Constructor ได้หลายตัว (ชื่อเดียวกันแต่จะต้องมี parameter ที่ต่างกันนะจร๊ะ) ดูตัวอย่างเพื่อความเข้าใจ

class Pen
    {
        public string Colour { get; set; }
        public int Qty { get; set; }
        public float Weight { get; set; }

        public Pen()
        {

        }

        public Pen(string colour)
        {
            this.Colour = colour;
        }

        public Pen(int qty, float weight)
        {
            this.Qty = qty;
            this.Weight = weight;
        }
    }

Constructor สามารถที่จะเรียกใช้ Constructor ตัวอื่นๆได้อีกด้วย ดูจากตัวอย่างเลยคัช

class Pen
    {
        public string Colour { get; set; }
        public int Qty { get; set; }

        public Pen()
        {
            Console.WriteLine("Write from no parameter constructor");
        }

        public Pen(string colour) : this()
        {
            this.Colour = colour;
            Console.WriteLine("Write from parameter colour constructor");
        }
    }

จากตัวอย่างคือ Constructor ที่มี parameter colour เรียกใช้งาน Constructor ที่ไม่มี parameter (เรียกเจ้าตัวนี้ว่า default Constructor) ซึ่งลำดับการทำงานของมัน คือ default Constructor จะถูก execute ก่อน มีเทคนิคสำหรับคนขี้เกียจนะคัช ลองพิม ctor แล้วกดปุ่ม Tab สองครั้ง ลองดูนะ

     Destructors ต้องอธิบายก่อนว่า C# นั้นเป็นภาษาที่มี garbage collector หมายความว่าตัว framework จะทำการลบ object ที่เราไม่ได้ใช้งานแล้วให้อัตโนมัติ เพียงแต่ว่า เราไม่สามารถรู้ได้ว่า garbage collector ทำงานหรือยัง ลบ object ตัวนี้ให้แล้วหรือยัง หาก garbage collector ทำงานช้าเกินไปอาจทำให้คอมพิวเตอร์ที่มีหน่วยความจำน้อยๆมีปัญหา out of memory ได้, Destructor จะเข้ามาช่วยตรงนี้ครัช Destructor จะทำงานเมื่อน object ของเราถูก disposed (ถูกลบ) Destructor เราก็เขียนโค้ดไปทำการ cleanup resource ที่ object เราไปเรียกใช้งานใน Destructor นี้แหละ

~Pen()
        {
            // clean up goes here
        }

แต่เอาเข้าจริงๆแล้ว Destructor นี้ผมแทบไม่เคยเขียนเลยน่ะครับ เพราะเรามี garbage collector ทำงานให้อยู่แล้ว ต้องพิจารณากันเอาเองเลยนะ

สอบถามหรือติดตามได้ที่ https://www.facebook.com/learnaspnetmvcjquery

ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

Part2 -> Section1 The Basic -> 003. MVC Folder Structure

Part2 -> Section1 The Basic -> 001. Introduction

Part2 -> Section1 The Basic -> 005. Controller