เรียนรู้ Extension Method

24 Aug 2016,
Share: 

โดยปกติแล้ว Class ต่างๆจะมี Method เป็นของตัวเองอยู่แล้ว แต่ถ้าเราต้องการจะเขียน Method เพิ่มเติมเข้าไป ในกรณีที่เราเป็นเจ้าของ Source code เราสามารถแก้ไข Source code ของเราได้เลย แต่ถ้าในกรณีที่เราไม่ได้เป็นเจ้าของ Source code เรามีเพียงแค่ dll ไฟล์เท่านั้น เราจะทําอย่างไร? ใน .net 3.0 ขึ้นไป เราสามารถเพิ่ม Method เสริมให้กลับ Class ที่ถูกสร้างไว้แล้วได้ โดยจะเรียกว่า Extension Method

เรามาดูตัวอย่างกันครับ คือเราจะสร้าง Method สําหรับเช็คว่าเป็นเลขคู่หรือคี่ โดยทั่วๆไปจะสร้างเป็น function แยกไว้ประมาณนี้

private static bool checkEvenNumber(int a) {
    return a % 2 == 0 ? true : false;
}

แล้วเวลาเรียกใช้ ก็จะเรียกแบบนี้

int x = 6;
bool isEvenNumber = checkEvenNumber(x);

แบบนี้ก็ใช้งานได้ครับ แต่จะดีกว่ามั้ย ถ้าเราเพิ่ม Method ให้กับ class int ไปเลย เวลาจะ check เลขคู่ก็ ”.” ต่อท้ายตัวแปรที่ต้องการ check ไปเลย ประมาณนี้

Image

เราสามารถทําแบบนี้ได้โดยใช้ Extension Method วิธีทําคือ สร้าง Static class ขึ้นมา 1 class (เป็นชื่ออะไรก็ได้) ภายใน class นี้จะเป็น Extension Method ต่างๆของเรา เช่น

static class ExtensionTest {

    public static bool isEvenNumber(this int a) {
        return a % 2 == 0 ? true : false;
    }

}

Extension Method ที่อยู่ภายใน จะ return เป็นอะไรก็ได้ และรับ parameter กี่ตัวก็ได้ แต่ parameter ตัวแรกจะต้องเป็น type ของ class ที่เราต้องการจะ เพิ่ม Method (โดยจะต้องใส่ this ด้วย) ในตัวอย่างด้านบน ผมเพิ่ม Method isEvenNumber ให้กับ Class int เวลาเรียกใช้ ก็สามารถเรียบแบบนี้ได้เลย

int x = 6;
bool evenNum = x.isEvenNumber();

ตัวอย่างการใช้งานแบบเต็มๆดังนี้ครับ

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ExtensionMethodExample {

    class Program {

        static void Main(string[] args) {
            int x = 20;
            Console.WriteLine(string.Format("x={0} is Even number: {1}", x, x.isEvenNumber()));
            Console.Read();
        }

    }

    static class ExtensionTest {

        public static bool isEvenNumber(this int a) {
            return a % 2 == 0 ? true : false;
        }

    }

}

จะได้ผลลัพธ์ดังนี้

Image

Download source code

Suggestion blogs

รีเลย์ relay

รีเลย์คืออะไร?รีเลย์ เป็นอุปกรณ์อิเล็กทรอนิกส์ที่ทำหน้าที่เป็น switch ตัด-ต่อ วงจรโดยใช้แม่เหล็กไฟฟ้า การที่จะทำให้รีเลย์ทำงานจะต้องจ่ายไฟให้กับรีเลย์ตาม spec ที่ระบุไว้ เมื่อจ่ายไฟให้กับรีเลย์ หน้าสัมผัสภายในรีเลย์จะสัมผัสกันทำให้เป็นวงจรปิด แต่ถ้าหยุดจ่ายไฟ หน้าสัมผัสภายในรีเลย์จะแยกออกจากกันทำให้เป็นวงจรเปิด ตามรูป

เริ่มต้นใช้งาน IPFS ด้วย Docker

สวัสดีครับ ในบทความนี้ผมจะอธิบายการใช้งาน IPFS ด้วย Docker ซึ่งการใช้งาน IPFS ด้วย Docker นั้นเป็นแนวทางนึงในการใช้งาน IPFS สําหรับใครที่อยากจะติดตั้งบนเครื่องก็สามารถอ่านเพิ่มเติมได้จาก Document ของ IPFS ได้เลยครับ แต่โดยส่วนตัวของผมนั้น ผมชอบที่จะใช้ผ่าน Docker เนื่องจากไม่ต้องติดตั้ง IPFS บนเครื่องของเรา ถ้าใครยังไม่รู้จัก Docker สามารถไปอ่านบนความเก่าๆได้ครับที่นี่ https://thiti.dev/tags/docker

วิธีการ ซื้อ-จองล่วงหน้า ลอตเตอรี่ให้ได้

หลังจากที่มีโครงการซื้อ-จองล่วงหน้าสลากกินแบ่งรัฐบาลเป็นรูปแบบการจัดสรรสลากกินแบ่งรัฐบาล ที่เปิดให้ซื้อ-จองผ่านช่องทางต่าง ๆ ของ ธนาคารกรุงไทย โดยการจองซื้อสลากสามารถทำได้ ทำได้ 3 ช่องทาง ช่องทางแรกคือไปพบพนักงานที่ธนาคารกรุงไทยเลย  ช่องทางที่สองคือผ่านเครื่อง ATM ของธนาคารกรุงไทย ซึ่งมี ATM ที่รองรับ 9000 เครื่องทั่วประเทศ และช่องทางที่สามคือ internet banking เมื่อเกิดโครงการนี้ขึ้นมา ปัญหาที่เกิดขึ้นคือ มีคนจํานวนไม่น้อยที่ไม่สามารถจองหรือซื้อสลากกินแบ่งรัฐบาลได้ เนื่องจากมีคนเข้าทํารายการจองหรือซื้อสลากกินแบ่งรัฐบาลเป็นจํานวนมาก (ช่วงแรกระบบถึงกับล่มเลยทีเดียว)


Copyright © 2019 - 2025 thiti.dev |  v1.53.0 |  Privacy policy | 

Build with ❤️ and Astro.

Github profile   Linkedin profile   Instagram   X profile   Nostr   Youtube channel   Telegram   Email contact   วงแหวนเว็บ