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

เจเนอริกคืออะไร
เจเนอริกคืออะไร
เจเนอริก เป็นคุณลักษณะใน 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#” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “เจเนริกส์ใน 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- เจเนริกส์ใน C#
- Async และ Await: การทำงานกับโค้ดแบบไม่พร้อมกัน
- ทำความเข้าใจเธรดและงาน
- สำรวจตัวแทนและแลมบ์ดา
- ทำความเข้าใจการสะท้อนใน C#