อาเรย์ใน C#
อาเรย์เป็นประเภทข้อมูลชนิดหนึ่ง ที่คุณสามารถเก็บค่าตัวแปรประเภทเดียวกันได้หลายๆ ค่าไว้ในตัวแปรเดียวที่เรียกว่า ตัวแปรอาเรย์ ในการสร้างอาเรย์ในภาษา C# มีรูปแบบดังนี้:type[] arrayName;โดย
type
สามารถเป็นได้ทั้งตัวแปรพื้นฐานในภาษา C# และตัวแปรประเภทอ็อบเจ็ค และ arrayName
เป็นชื่อของอาเรย์ index ของอาเรย์นั้นจะเริ่มจาก 0 ดังนั้น index
ของอาเรย์จะมีตั้งแต่ 0 ถึง n - 1 เมือ n เป็นจำนวนขนาดของค่าในอาเรย์
มีอาเรย์ 3 ประเภทในภาษา C# นั่นคือ อาเรย์หนึ่งมิติ (Single-Dimensional
array) อาเรย์หลายมิติ (Multidimensional array) และ อาเรย์ของอาเรย์
(Array of Array)อาเรย์ 1 มิติ
อาเรย์หนึ่งมิติ เป็นรูปแบบพื้นฐานของอาเรย์ที่จะเก็บค่าของข้อมูลที่มีประเภทเดียวกันเป็น ซึ่งแบบลำดับไว้ในตัวแปรอาเรย์ และเราสามารถเข้าถึงข้อมูลเหล่านี้ได้ผ่าน index ของมันint[] array1 = new int[5]; int[] array2 = new int[] { 1, 3, 5, 7, 9};ในตัวอย่างเราได้ประกาศตัวแปรอาเรย์สองตัว เราประกาศตัวแปรที่มีชื่อว่า
array1
โดยมีประเภทข้อมูลเป็น int
นั่นหมายความว่าตัวแปรนี้จะใช้กับข้อมูลเป็นตัวเลขจำนวนเต็ม
ซึ่งมีขนาดเป็น 5 แต่เรายังไม่ได้กำหนดค่าใดๆ ให้กับอาเรย์
ดังนั้นมันจะเป็นค่าว่างเปล่าหรือ null
สำหรับอาเรย์อันที่สองมีชื่อว่า array2
เราได้กำหนดค่าให้กับมันด้วย// updating array values int[] array1 = new int[5]; array1[0] = 2; array1[1] = 43; array1[2] = 54; // reading array value float[] array2 = new float[] {1,2f, 3.4f, 5.0f, 8.8f, 10.5f}; Console.WriteLine(array2[0]); // 1.2 Console.WriteLine(array2[4]); // 10.5คุณ สามารถเข้าถึงตำแหน่งของอาเรย์เพื่ออ่านหรืออัพเดทค่า โดยอาเรย์นั้นจะมี Index เริ่มที่ 0 เสมอ ในตัวอย่างในการเข้าถึงค่าแรกของอาเรย์
array2
เราต้องใช้คำสั่ง array2[0]
และค่าสุดท้ายคือ array2[4]
เพราะว่าอาเรย์ array2 นั้นมีขนาดเป็น 5การใช้คำสั่ง For loop กับอาเรย์
เพราะ ว่าอาเรย์นั้นเก็บข้อมูลเป็นแบบลำดับและสามารถเข้าถึงข้อมูลได้โดยผ่าน index ของมัน การใช้ for loop กับอาเรย์นั้นจึงเป็นสิ่งที่สะดวกมากกว่า หรือเมื่อเรามีตัวแปรอาเรย์ที่มีขนาดใหญ่using System; class SingleArrayRead { static void Main(string[] args) { int[] array1 = new int[10]; for (int i = 0; i < 10; i++) array1[i] = (i + 1) * 5; for (int i = 0; i < 10; i++) Console.Write(array1[i] + ", "); Console.ReadKey(); } }ในตัวอย่าง เราได้ใช้คำสั่ง for loop ในการกำหนดค่าให้กับอาเรย์ โดยใช้ index ของอาเรย์ผ่านตัวแปร i หลังจากกำหนดค่าให้เสร็จแล้ว เราก็ได้สร้างอีก loop หนึ่งเพื่ออ่านจากมาแสดงผลที่หน้าจอ
5, 10, 15, 20, 25, 30, 35, 40, 45, 50,และนี่เป็นผลลัพธ์ของโปรแกรมในอาเรย์หนึ่งมิติ
อาเรย์หลายมิติ
อา เรย์หลายมิตินั้นจะสามารถเก็บข้อมูลได้หลายมิติมากขึ้น อาเรย์สองมิตินั้นเหมือนตาราง ซึ่งจะไปกอบไปด้วยแถวและหลัก อาเรย์ 3 มิตินั้นจะเหมือนลูกบาศก์ และอาเรย์สามารถมีได้ทั้ง 4 มิติ 5 มิติ และไปเรื่อยๆ แต่โดยปกติในการเขียนโปรแกรมแล้ว ส่วนมากที่สุดที่เราจะใช้คือถึงแค่ 3 มิติเท่านั้นอาเรย์ 2 มิติ
การสร้างอาเรย์สองมิตินั้นคล้ายกับอาเรย์หนึ่งมิติ แต่มันแค่ต้องการเครื่องหมาย,
คั่นระหว่างมิติสำหรับการสร้าง โดยมีรูปแบบดังนี้:int[,] array1 = new int[2, 3]; int[,] array2 = new int[,] { {1, 2, 3}, {4, 5, 6}};ในตัวอย่างเราได้ประกาศอาเรย์สองมิติ โดยใช้เครื่องหมายคอมม่า
,
เป็นตัวคั่นระหว่างมิติ โดยมันจะเก็บข้อมูลในแบบแถวและหลัก พูดง่ายๆ
ก็คือแบบต่างรางนั่นเอง คุณสามารถเข้าถึงค่าของอาเรย์สองมิติได้โดยคู่ของ
index แบบนี้ [row, column]
มาดูตัวอย่างint[,] array2 = new int[,] { {1, 2, 3}, {4, 5, 6} }; Console.WriteLine(array2[0, 0]); // read 1 Console.WriteLine(array2[0, 1]); // read 2 Console.WriteLine(array2[0, 2]); // read 3 Console.WriteLine(array2[1, 0]); // read 4 Console.WriteLine(array2[1, 1]); // read 5 Console.WriteLine(array2[1, 2]); // read 6 Console.WriteLine(array2[2, 2]); // you can't do thisในตัวอย่าง เราได้เข้าถึงค่าของอาเรย์
array2
สำหรับคำสั่งสุดท้าย array2[2, 2]
นั้นจะเกิดข้อผิดพลาดเพราะว่า Index ของอาเรย์นั้นเกินขอบเขต
เช่นเดียวกันกับอาเรย์หนึ่งมิติ index ของมันก็เริ่มจาก 0
เนื่องจากขนาดอาเรย์ของเรานั้นเป็น 2x3 ดังนั้นค่าแรกในอาเรย์จะเป็น index [0, 0]
และค่าสุดท้ายคือ [1, 2]
การใช้ For loop กับอาเรย์สองมิติ
อีกครั้ง เราสามารถใช้คำสั่ง for loop กับอาเรย์สองมิติหรืออาเรย์หลายมิติ แต่มันจะเป็น loop ที่ซ้อนกัน มาดูตัวอย่างusing System; class TwoArrayRead { static void Main(string[] args) { int[,] myArray = new int[,] { {10, 43, -23, 5 }, {-5, 9, 15, 3 }, {0, 41, -30, -7} }; for (int i = 0; i < 3; i++) { for (int j = 0; j < 4; j++) { Console.Write("[{0},{1}] = {2}\t", i, j, myArray[i, j]); } Console.WriteLine(); } Console.ReadKey(); } }ใน ตัวอย่างเราได้ใช้ for loop เพื่ออ่านค่าจากอาเรย์สองมิติ ในการอ่านค่าจากอาเรย์สองมิติ เราจำเป็นต้องใช้สอง loop และเป็น loop ที่ซ้อนกัน (nested loops) โดย loop ด้านนอกจะใช้เป็น index ของแถว และข้างในจะใช้เป็น Index ของคอลัมน์ เช่น myArray[0, 2] นั้นจะเป็นแถวที่ 1 คอลัมน์ที่ 3
คุณสามารถสร้างอาเรย์ได้หลายมิติกว่านี้ถ้าหากคุณต้องการที่จะทำแบบนั้น โดยมันมีหลักการเหมือนกับอาเรย์สองมิติ มาดูตัวอย่าง
int threeArray[, , ,] = new int [3, 4, 5]; int fourArray[, , , ,] = new int [3, 4, 5, 6]; ...ในตัวอย่างเป็นการสร้างอาเรย์มิติที่มากกว่า 2 ในภาษา C# โดยคั่นด้วยเครื่องหมายคอมม่าสำหรับจำนวนมิติ ในการเข้าถึงค่าก็จะเป็น
threeArray[i, j, k, ...]
อาเรย์ของอาเรย์ (Jagged)
คุณ สามารถเก็บข้อมูลแบบอาเรย์ไว้ในอาเรย์ เช่นเดียวกันกับเก็บตัวแปรปกติไว้ในอารเย์ มันคล้ายๆ กับอาเรย์หลายติมิแต่ไม่ทั้งหมด มันเรียกว่าอาเรย์ของอาเรย์หรืออาเรย์ jaggedint[][] jaggedArray = new int[6][];อาเรย์ของอา เรย์นั้นแตกต่างจากอเรย์หลายมิติในภาษา C# แต่มันเหมือนกับอาเรย์หลายมิติในภาษา C และ C++ ในการอ่านค่าและเข้าถึงค่าก็เช่นเดียวกัน
using System; class JaggedArray { static void Main(string[] args) { int[][] jaggedArray = new int[4][]; for (int i = 0; i < jaggedArray.Length; i ++) { jaggedArray[i] = new int[] { (i * 3) + 1, (i * 3) + 2, (i * 3) + 3 }; } for (int i = 0; i < jaggedArray.Length; i++) { for (int j = 0; j < jaggedArray[i].Length; j++) { Console.WriteLine("array[{0}][{1}] = {2}", i, j, jaggedArray[i][j]); } } Console.ReadKey(); } }ใน ตัวอย่าง เราได้สร้างอาเรย์ของอาเรย์ โดยมีขนาดคือ 4x3 นั่นหมายความว่าอาเรย์จะประกอบไปด้วย 4 แถวและ 3 คอลัมน์ เราได้ใช้คำสั่ง for loop ในการกำหนดค่าให้กับอาเรย์ในแต่ละแถว โดยค่า
Length
นั้นเป็นการอ่านขนาดของอาเรย์ เรายังอ่านค่าจากอาเรย์และแสดงผลทางหน้าจอโดยใช้ nested loopเหมือนกับตัวแปร เราสามารถกำหนดค่าให้กับตัวแปรอาเรย์ได้ทันทีเมื่อมันถูกสร้างเหมือนตัวอย่างข้างล่างนี้
using System; class JaggedArray2 { static void Main(string[] args) { int[][] jaggedArray = new int[][] { new int[] { 1, 2, 3}, new int[] { 4, 5, 6 }, new int[] { 7, 8, 9 }, new int[] { 10, 11, 12 } }; /* another method jaggedArray[0] = new int[] { 1, 2, 3}; jaggedArray[1] = new int[] { 4, 5, 6}; jaggedArray[2] = new int[] { 7, 8, 9}; jaggedArray[3] = new int[] { 10, 11, 12}; */ for (int i = 0; i < jaggedArray.Length; i++) { for (int j = 0; j < jaggedArray[i].Length; j++) { Console.WriteLine("array[{0}][{1}] = {2}", i, j, jaggedArray[i][j]); } } Console.ReadKey(); } }ใน ตัวอย่างเป็นการกำหนดค่าให้กับตัวแปรอาเรย์ในทันทีหลังจากที่มันถูกสร้าง หรือสามารถกำหนดให้ภายหลังเหมือนในส่วนทีคอมเม้นต์ไว้ได้เช่นกัน
array[0][0] = 1 array[0][1] = 2 array[0][2] = 3 array[1][0] = 4 array[1][1] = 5 array[1][2] = 6 array[2][0] = 7 array[2][1] = 8 array[2][2] = 9 array[3][0] = 10 array[3][1] = 11 array[3][2] = 12และนี่เป็นลัพธ์เมื่อรันโปรแกรม
ในบทนี้ คุณได้เรียนรู้เกี่ยวกับอาเรย์ในภาษา C# ในแบบต่างๆ ทั้งอาเรย์หนึ่งมิติ อาเรย์หลายมิติ และอาเรย์ของอาเรย์
ไม่มีความคิดเห็น:
แสดงความคิดเห็น