เรียนรู้ Extension Method

24 Aug 2016

Share to:

โดยปกติแล้ว 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

ไดโอด (Diode)

ไดโอด (Diode)ไดโอด เป็นอุปกรณ์อิเล็กทรอนิกส์ ที่ทํามาจากสารกึ่งตัวนําชนิด p-n ซึ่งมีคุณสมบัติคือ ยอมให้กระแสไฟฟ้าไหลผ่านได้เพียงทิศทางเดียว

ปิด Barcode บนหน้าบัตรประชาชนทุกครั้งที่ลง Social Media

สวัสดีครับ ในบทความนี้เป็นความสั้นๆนะครับ เนื่องจากช่วงนี้มีพวกมิจฉาชีพเยอะมาก เราจึงต้องให้ความสําคัญกับการเก็บรักษาข้อมูลส่วนตัวไม่ไห้ตกไปอยู่ในมือพวกมิจฉาชีพพวกนี้

vb.net excel database ด้วย OleDb

ในบทความนี้จะมาพูดถึงเรื่องการทํางานกับ file Excel ด้วย VB.NET โดยจะสามารถเข้าถึงข้อมูล แก้ไขข้อมูล และเพิ่มข้อมูล ด้วยคําสั่ง SQL เหมือนกับเป็น Database ตัวนึง ซึ่งการใช้งานจะต้องใช้ libraries ที่ชื่อว่า OleDb ใน Virtual Studio จะมีให้อยู่แล้ววิธีการใช้งานจะแบ่งเป็นสองแบบดังนี้การใช้งานโดยไม่ต้องการผลลัพธ์ของข้อมูลเช่น insert, update, deleteการใช้งานโดยต้องการผลลัพธ์ของข้อมูลเช่น Query ข้อมูลจาก Excel(คําสั่ง Select)


Copyright © 2019 - 2024 thiti.dev |  v1.19.0 |  Privacy policy |  status | 

            วงแหวนเว็บ