0Pricing
C# Academy · บทเรียน

เจเนริกส์ใน C#

เรียนรู้ว่าเจเนริกส์ช่วยให้สร้างโครงสร้างโค้ดที่ปลอดภัยด้านชนิดข้อมูลและนำกลับมาใช้ใหม่ได้อย่างไร

เจเนริกส์ใน C# เป็นบทเรียน C# Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 5 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน C# Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส C# Academy มีบทเรียนทั้งหมด 5 บทเรียน

บทนำสู่เจเนอริก

เจเนอริกใน C#

ยินดีต้อนรับสู่บทเรียนแรกในหัวข้อ "คุณลักษณะขั้นสูงของ C#"! ในบทเรียนนี้ คุณจะได้เรียนรู้เกี่ยวกับเจเนอริก ซึ่งเป็นคุณลักษณะที่มีประสิทธิภาพใน C# ที่ช่วยให้คุณสร้างโค้ดที่ยืดหยุ่นและนำกลับมาใช้ใหม่ได้ มาเริ่มกันเลย!

เจเนริกส์ใน C# — ภาพประกอบ 1

เจเนอริกคืออะไร

เจเนอริกคืออะไร

เจเนอริก เป็นคุณลักษณะใน C# ที่ช่วยให้คุณกำหนดคลาส เมธอด และโครงสร้างข้อมูลโดยใช้ตัวยึดตำแหน่งแทนชนิดข้อมูลที่จัดเก็บหรือใช้งาน เจเนอริกช่วยให้เกิดความปลอดภัยของชนิดข้อมูลและการนำโค้ดกลับมาใช้ใหม่

ตัวอย่าง: รายการเจเนอริก (List<T>) สามารถจัดเก็บองค์ประกอบชนิดใดก็ได้ พร้อมทั้งรับประกันความปลอดภัยของชนิดข้อมูล

การสร้างคลาสเจเนอริก

การสร้างคลาสเจเนอริก

คุณสามารถกำหนดคลาสเจเนอริกโดยใช้ไวยากรณ์ <T> โดยที่ T แทนพารามิเตอร์ชนิดข้อมูล ตัวอย่าง:

ประเด็นสำคัญ: ใช้เจเนอริกเพื่อสร้างคลาสที่ทำงานกับชนิดข้อมูลใดก็ได้ โดยยังคงรักษาความปลอดภัยของชนิดข้อมูลไว้

using System;

class GenericBox<T> {
    public T Value { get; set; }

    public void Display() {
        Console.WriteLine("Value: " + Value);
    }
}

class Program {
    static void Main() {
        GenericBox<int> intBox = new GenericBox<int> { Value = 42 };
        intBox.Display(); // Outputs: Value: 42

        GenericBox<string> stringBox = new GenericBox<string> { Value = "Hello, Generics!" };
        stringBox.Display(); // Outputs: Value: Hello, Generics!
    }
}

การสร้างเมธอดเจเนอริก

การสร้างเมธอดเจเนอริก

คุณสามารถกำหนดเมธอดเจเนอริกภายในคลาสได้ ตัวอย่าง:

เคล็ดลับ: ใช้เมธอดเจเนอริกสำหรับการดำเนินการที่ใช้ได้กับชนิดข้อมูลหลายชนิด

using System;

class Program {
    static void Main() {
        PrintValue(42);
        PrintValue("Generics are powerful!");
    }

    static void PrintValue<T>(T value) {
        Console.WriteLine("Value: " + value);
    }
}

ข้อจำกัดของเจเนอริก

ข้อจำกัดของเจเนอริก

ข้อจำกัดจะจำกัดชนิดข้อมูลที่สามารถใช้เป็นพารามิเตอร์ชนิดข้อมูลได้ ตัวอย่าง:

  • where T : struct - T ต้องเป็นชนิดค่า
  • where T : class - T ต้องเป็นชนิดอ้างอิง
  • where T : new() - T ต้องมีตัวสร้างที่ไม่มีพารามิเตอร์

ตัวอย่าง:

ประเด็นสำคัญ: ข้อจำกัดทำให้เจเนอริกมีความยืดหยุ่นและเหมาะกับสถานการณ์เฉพาะมากขึ้น

using System;

class Program {
    static void Main() {
        DisplayDefault<int>();
        DisplayDefault<string>();
    }

    static void DisplayDefault<T>() where T : new() {
        T instance = new T();
        Console.WriteLine("Created instance of: " + typeof(T));
    }
}

คอลเลกชันเจเนอริก

คอลเลกชันเจเนอริก

C# มีคอลเลกชันเจเนอริกที่มาพร้อมระบบหลายรูปแบบ:

  • List<T>: จัดเก็บคอลเลกชันขององค์ประกอบในอาร์เรย์แบบไดนามิก
  • Dictionary<TKey, TValue>: จัดเก็บคู่คีย์-ค่าเพื่อให้ค้นหาได้อย่างรวดเร็ว
  • Queue<T>: ใช้โครงสร้างเข้าก่อนออกก่อน (FIFO)

ตัวอย่าง: การใช้รายการเจเนอริก:

using System;
using System.Collections.Generic;

class Program {
    static void Main() {
        List<string> names = new List<string> { "Alice", "Bob", "Charlie" };
        names.Add("Diana");

        foreach (string name in names) {
            Console.WriteLine(name);
        }
    }
}

โจทย์ฝึกปฏิบัติ

โจทย์ฝึกปฏิบัติ

สร้างคลาสเจเนอริก Pair<TKey, TValue> ที่จัดเก็บคู่คีย์-ค่า และสร้างเมธอดเจเนอริก Swap() ที่สลับคีย์กับค่า ตัวอย่าง:

using System;

class Pair<TKey, TValue> {
    public TKey Key { get; set; }
    public TValue Value { get; set; }

    public void Swap() {
        (Key, Value) = ((TKey)(object)Value, (TValue)(object)Key);
    }

    public void Display() {
        Console.WriteLine($"Key: {Key}, Value: {Value}");
    }
}

class Program {
    static void Main() {
        Pair<string, int> pair = new Pair<string, int> { Key = "Age", Value = 30 };
        pair.Display();
        pair.Swap();
        pair.Display();
    }
}

แนวปฏิบัติที่ดีสำหรับการใช้เจเนอริก

แนวปฏิบัติที่ดีสำหรับการใช้เจเนอริก

ต่อไปนี้คือแนวปฏิบัติที่ดี:

  • ใช้เจเนอริกเพื่อสร้างคลาสและเมธอดที่นำกลับมาใช้ใหม่ได้และปลอดภัยด้านชนิดข้อมูล
  • ใช้ข้อจำกัดเมื่อต้องการข้อกำหนดเฉพาะของชนิดข้อมูล
  • เลือกใช้คอลเลกชันเจเนอริกแทนคอลเลกชันที่ไม่ใช่เจเนอริกเพื่อประสิทธิภาพและความปลอดภัย

เคล็ดลับ: ใช้ชื่อพารามิเตอร์ชนิดข้อมูลที่สื่อความหมาย เช่น T สำหรับชนิดข้อมูล หรือ TKey และ TValue สำหรับคู่คีย์-ค่า

ยอดเยี่ยม!

ยอดเยี่ยม!

ขอแสดงความยินดีด้วย! คุณได้เรียนรู้วิธีใช้ชนิดข้อมูลทั่วไปเพื่อสร้างโค้ดที่นำกลับมาใช้ใหม่ได้และยืดหยุ่นใน C# แล้ว ในบทเรียนถัดไป เราจะสำรวจการเขียนโปรแกรมแบบอะซิงโครนัสด้วย async และ await มาเขียนโค้ดกันต่อไป!

เจเนริกส์ใน C# — ภาพประกอบ 10

คำถามที่พบบ่อย

บทเรียน “เจเนริกส์ใน C#” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “เจเนริกส์ใน C#” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส C# Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส C# Academy มีบทเรียนทั้งหมด 5 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “เจเนริกส์ใน C#”

เรียนรู้ว่าเจเนริกส์ช่วยให้สร้างโครงสร้างโค้ดที่ปลอดภัยด้านชนิดข้อมูลและนำกลับมาใช้ใหม่ได้อย่างไร คุณปฏิบัติ C# Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน C# Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน C# Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 5 บทเรียน

บทเรียน “เจเนริกส์ใน C#” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน C# Academy นี้ได้ไหม

ได้ บทเรียน C# Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. เจเนริกส์ใน C#
  2. Async และ Await: การทำงานกับโค้ดแบบไม่พร้อมกัน
  3. ทำความเข้าใจเธรดและงาน
  4. สำรวจตัวแทนและแลมบ์ดา
  5. ทำความเข้าใจการสะท้อนใน C#
← กลับไปที่ C# Academy