ในบทนี้ คุณจะได้รู้จักกับ Collections ในภาษา C# และการใช้งาน Collections ประเภทต่างๆ ที่มีความจำเป็นในสภานะการณ์ที่แตกต่างกัน
Collections (คอลเล็กชัน) หรือ Generic Collections นั้นเป็นไลบรารี่ของภาษา C# ที่มีอยู่แล้ว ซึ่งเราสามารถที่จะนำมาใช้งานได้เลย โดยมันจะอยู่ภายใน Namespace
ต่อไปมาดูตัวอย่างการใช้ List ในภาษา C#
number.Add(1);
number.Add(3);
number.Add(5);
number.Add(7);
number.Add(9);
ต่อมาเป็นการแสดงผลข้อมูลในลิส โดย
มาดูตัวอย่างการใช้งาน Dictionary ในภาษา C#
เนื่องจากมันเป็น Generic ที่ Implement มาจากคลาสเดียวกันคุณสามารถใช้ตัวแปร
ในบทนี้คุณได้รู้จักกับ Generic พื้นฐานในภาษา C# และการใช้งานแบบต่างๆ และคุณสามารถดู Generic ทั้งหมดได้ที่นี่ https://msdn.microsoft.com/en-us/library/system.collections.generic(v=vs.110).aspx
Collections (คอลเล็กชัน) หรือ Generic Collections นั้นเป็นไลบรารี่ของภาษา C# ที่มีอยู่แล้ว ซึ่งเราสามารถที่จะนำมาใช้งานได้เลย โดยมันจะอยู่ภายใน Namespace
System.Collections.Generic
อย่างไรก็ตาม เราจะพูดถึงเฉพาะ Collection ที่มีการใช้บ่อยๆ ที่สุดเท่านั้น โดยรูปแบบการใช้งาน Generic Collections จะเป็นดังนี้Type<Data_type> collection_name = new Type<Data_type>();
การใช้ List
List (ลิสต์) นั้นเป็นโครงสร้างข้อมูลที่ใช้ในการเก็บข้อมูลแบบเป็นลำดับ โดยมันมาแทน ArrayList ที่ถูกเลิกใช้ไปตั้งแต่ .Net Framework 2.0 สิ่งแตกต่างของมันกับอาเรย์คือ มันสามารถเก็บข้อมูลได้แบบไดนามิกส์ หรือเพิ่มขึ้นเรื่อยๆ โดยที่เราไม่ต้องบอกขนาดล่วงหน้า และเช่นเดียวกัน Collections ทกตัวนั้นเป็นไดนามิกส์ทั้งหมดต่อไปมาดูตัวอย่างการใช้ List ในภาษา C#
using System; using System.Collections.Generic; namespace CollectionsExample { class Program { static void Main(string[] args) { List<int> number = new List<int>(); number.Add(1); number.Add(3); number.Add(5); number.Add(7); number.Add(9); for (int i = 0; i < number.Count; i++) { int n = number.ElementAt<int>(i); Console.Write("{0}, ", n); } Console.ReadKey(); } } }จากตัวอย่าง เราได้สร้าง List ขึ้นมาโดยลิสต์นี้จะใช้เก็บข้อมูลประเภท
Integer
โดยลิสต์ของเรานั้นจะมีขนาดเป็นแบบไดนามิกส์List number = new List();คุณสามารถเพิ่มข้อมูลเข้าไปในลิสต์ได้ไม่จำกัด โดยใช้เมธอด
Add()
และพารามิเตอร์นั้นเป็นข้อมูลชนิด Integer ที่คุณได้ประกาศไว้ในตอนแรก ในตัวอย่างเราได้เพิ่มเข้าไป 5 หมายเลขnumber.Add(1);
number.Add(3);
number.Add(5);
number.Add(7);
number.Add(9);
ต่อมาเป็นการแสดงผลข้อมูลในลิส โดย
Count;
นั้นเป็นตัวแปรที่ใช้สำหรับรับค่าขนาดของลิสต์มา และเมธอด ElementAt<int>()
สำหรับการนำข้อมูลออกจาก List โดยมีพารามิเตอร์เป็น index ของมันfor (int i = 0; i < number.Count; i++) { int n = number.ElementAt<int>(i); Console.Write("{0}, ", n); }ข้างล่างนี้ผมเป็นรันของโปรแกรม ที่แสดงข้อมูลทั้งหมดภายใน List โดยการใช้คำสั่ง for loop ในการแสดงผล
1, 3, 5, 7, 9,
การใช้ Dictionary
Dictionary เป็น Generic ชนิดหนึ่งในภาษา C# ที่เก็บข้อมูลเป็นแบบคูอันดับของ Key และ Value นั่นหมายความว่ามันใช้ Key เป็น index เพื่อนำข้อมูลมาใช้ มันมักจะถูกนำมาใช้ในงานกรณีที่ Key นั้นเป็นข้อมูลชนิดอื่นๆ เช่น String ซึ่งมันรวดเร็วและสะดวกมาดูตัวอย่างการใช้งาน Dictionary ในภาษา C#
using System; using System.Collections.Generic; namespace CollectionExample2 { class Program { static void Main(string[] args) { Dictionary<string, string> country = new Dictionary<string, string>(); country.Add("us", "United State"); country.Add("uk", "Ukrain"); country.Add("be", "Belgium"); country.Add("gr", "Greece"); // Get key and value from KeyValuePair object foreach (KeyValuePair<string, string> cnt in country) { Console.WriteLine("Key = {0}, Value = {1}", cnt.Key, cnt.Value); } // Direct access the value via key country["gr"] = "GREECE"; Console.WriteLine("\nuk = " + country["uk"]); Console.WriteLine("gr = " + country["gr"]); // Remove string object via key country.Remove("us"); if (!country.ContainsKey("us")) { Console.WriteLine("\nKey \"us\" is not found."); } Console.WriteLine("\nCount = " + country.Count); Console.ReadKey(); } } }จากตัวอย่างข้างบน เราได้สร้าง Dictionary ชื่อมีชื่อว่า
country
โดยมี Key และ Value เป็น string เพื่อสำหรับเก็บข้อมูลตัวย่อและชื่อของประเทศนั้นๆ ด้วยคำสั่งDictionary<string, string> country = new Dictionary<string, string>();หลังจากนั้นเราใช้ฟังก์ชัน
Add(para1, para2)
ในการเพิ่มข้อมูล โดยมันจะมีพารามิเตอร์ของตัวคือ Key และ Value ของมัน ซึ่งแตกต่างจาก Generic แบบ List เล็กน้อย และเราได้ใช้ foreach
ในการวนอ่านค่าจาก Dictionary โดยอ่านมาเก็บไว้ในออบเจ็บ KeyValuePair
ที่ชื่อ cnt และเราสามารถเข้าถึง Key ได้โดย cnt.Key
และสำหรับ Value โดย cnt.Value
และแสดงผลมันออกมาทางหน้าจอforeach (KeyValuePair<string, string> cnt in country) { Console.WriteLine("Key = {0}, Value = {1}", cnt.Key, cnt.Value); }ต่อไปเป็นการเข้าถึงข้อมูลโดย Key โดยจะเข้าโดยชื่อตัวแปรและวงเล็บ
[]
จากตัวอย่างเราได้เปลี่ยนค่าให้กับสมาชิกที่มี Key เป็น gr ให้เป็นตัวพิมพ์ใหญ่ และแสดงผลมันออกมาcountry["gr"] = "GREECE"; Console.WriteLine("\nuk = " + country["uk"]); Console.WriteLine("gr = " + country["gr"]);ต่อไปเราได้ใช้เมธอด
Remove()
เพื่อลบ Key "us" ออกจาก Dictionary โดยใส่ Key ที่ต้องการลบเป็นพารามิเตอร์ และเราใช้เมธอด ContainsKey()
เพื่อตรวจสอบว่ามี Key นี้อยู่หรือไม่ ถ้าไม่มีจะแสดงผลว่า ไม่พบ Keyเนื่องจากมันเป็น Generic ที่ Implement มาจากคลาสเดียวกันคุณสามารถใช้ตัวแปร
Count
เพื่อดูจำนวนใน Generic ชนิดต่างๆ ได้เสมอ และนี่เป็นผลลัพธ์เมื่อรันโปรแกรมKey = us, Value = United State Key = uk, Value = Ukrain Key = be, Value = Belgium Key = gr, Value = Greece uk = Ukrain gr = GREECE Key "us" is not found. Count = 3มัน ยังมีเมธอดต่างๆ อีกมากมายที่คุณสามารถใช้ได้สำหรับ Generic แต่ละชนิดคุณสามารถตรวจสอบได้โดย Intellisense (code suggestion) ของโปรแกรม
Generic class ประเภทอื่นๆ
ในภาษา C# ยังมี Generic Collection แบบอื่นๆ อีกที่คุณสามารภใช้ได้ ตามรูปแบบของโปรแกรมของคุณ เช่นStack
เป็นออบเจ็คข้อมูลแบบสมาชิกที่เข้าทีหลังจะออกมาก่อน หรือ Queue
สมาชิกที่เข้าก่อนจะออกจาก เป็นต้นในบทนี้คุณได้รู้จักกับ Generic พื้นฐานในภาษา C# และการใช้งานแบบต่างๆ และคุณสามารถดู Generic ทั้งหมดได้ที่นี่ https://msdn.microsoft.com/en-us/library/system.collections.generic(v=vs.110).aspx
ไม่มีความคิดเห็น:
แสดงความคิดเห็น