บทช่วยสอนอาร์เรย์ C#: สร้าง ประกาศ เริ่มต้น

⚡ สรุปอย่างชาญฉลาด

อาร์เรย์ใน C# จัดเก็บชุดข้อมูลขนาดคงที่ซึ่งประกอบด้วยองค์ประกอบที่มีชนิดข้อมูลเดียวกัน ภายใต้ชื่อตัวแปรเดียวกัน โดยแต่ละองค์ประกอบจะอยู่ที่ดัชนีเริ่มต้นที่ศูนย์ ทำให้การประกาศ การกำหนดค่าเริ่มต้น และการเข้าถึงค่าต่างๆ ทำได้อย่างรวดเร็วและคาดเดาได้

  • 📌 ความหมาย: อาร์เรย์เก็บค่าหลายค่าของชนิดข้อมูลเดียวกันในตำแหน่งที่มีดัชนี ซึ่งสามารถเข้าถึงได้ผ่านตัวแปรเดียว
  • ✅ ประกาศ: การระบุชนิดข้อมูลโดยใช้เครื่องหมายวงเล็บเหลี่ยมและชื่อ จะใช้เป็นการประกาศอาร์เรย์ ตัวอย่างเช่น Int32[] values
  • 🔢 การเริ่มต้น: คีย์เวิร์ดใหม่จะกำหนดขนาด จากนั้นแต่ละดัชนีจะได้รับค่า เช่น values[0]=1
  • 🔍 Access: การจัดทำดัชนีแบบเริ่มต้นที่ศูนย์จะอ่านหรือเขียนองค์ประกอบใดๆ ก็ได้ ดังนั้นรายการแรกคือค่า[0] และการนับจะเริ่มต้นที่ 0
  • 🔁 การวนซ้ำ: ลูป foreach จะวนไปตรวจสอบทุกองค์ประกอบโดยไม่มีดัชนี ซึ่งจะช่วยหลีกเลี่ยงข้อผิดพลาดเรื่องค่าเกินขอบเขตในอาร์เรย์ขนาดใหญ่
  • 🤖 ความช่วยเหลือจากเอไอ: GitHub Copilot สร้างโครงสร้างพื้นฐานของอาร์เรย์ ในขณะที่ ML.NET โหลดอาร์เรย์ตัวเลขเป็นคุณลักษณะสำหรับโมเดลการเรียนรู้ของเครื่อง

อาร์เรย์ใน C#

อาร์เรย์ใน C # คืออะไร?

อาร์เรย์ใช้ในการจัดเก็บคอลเลกชันหรือชุดขององค์ประกอบ องค์ประกอบเหล่านี้จะเป็นประเภทเดียวกัน

ตัวอย่างเช่น หากคุณมีอาร์เรย์ของค่าจำนวนเต็ม อาร์เรย์นั้นอาจเป็นชุดของค่าต่างๆ เช่น [1, 2, 3, 4] โดยที่จำนวนองค์ประกอบในอาร์เรย์คือ 4

อาร์เรย์มีประโยชน์เมื่อคุณต้องการจัดเก็บคอลเลกชันของค่าประเภทเดียวกัน ดังนั้นแทนที่จะประกาศก ตัวแปร สำหรับทุกองค์ประกอบ คุณสามารถประกาศตัวแปรได้เพียงตัวเดียว

ตัวแปรนี้จะชี้ไปที่อาร์เรย์หรือรายการองค์ประกอบซึ่งจะรับผิดชอบในการจัดเก็บองค์ประกอบของอาร์เรย์

มาดูกันว่าเราจะทำงานกับอาร์เรย์ใน C# ได้อย่างไร ในตัวอย่างของเรา เราจะประกาศอาร์เรย์ของจำนวนเต็มและทำงานร่วมกับพวกมันตามลำดับ

โปรดทราบว่าโค้ดด้านล่างนี้ทั้งหมดถูกสร้างขึ้นในไฟล์ Program.cs

ขั้นตอน 1) การประกาศอาร์เรย์ – ขั้นตอนแรกคือการประกาศอาร์เรย์ มาดูกันว่าเราจะบรรลุเป้าหมายนี้ได้อย่างไรด้วยตัวอย่างโค้ดด้านล่างนี้

อาร์เรย์ใน C#

Code คำอธิบาย:-

  1. ส่วนแรกคือ ประเภทข้อมูล- ระบุประเภทขององค์ประกอบที่ใช้ในอาร์เรย์ ในกรณีของเรา เรากำลังสร้างอาร์เรย์ของจำนวนเต็ม
  2. ส่วนที่สอง [ ] ซึ่งระบุอันดับของอาร์เรย์ (อันดับคือตัวยึดตำแหน่งซึ่งระบุจำนวนองค์ประกอบที่อาร์เรย์จะมี)
  3. ถัดไปคือชื่อของอาร์เรย์ซึ่งในกรณีของเราคือ 'ค่า' โปรดทราบว่าคุณเห็นเส้นใต้เส้นหยักสีเขียว ไม่ต้องกังวลกับเรื่องนั้น นั่นเป็นเพียง. Net ที่บอกว่าคุณได้ประกาศอาร์เรย์ แต่ไม่ได้ใช้มันเลย

ขั้นตอน 2) ขั้นตอนต่อไปคือการเริ่มต้นอาร์เรย์ ที่นี่เราจะระบุจำนวนค่าที่อาร์เรย์จะเก็บไว้ เราจะกำหนดค่าให้กับแต่ละองค์ประกอบของอาร์เรย์ด้วย

อาร์เรย์ใน C#

Code คำอธิบาย:-

  1. ขั้นแรก เราจะกำหนดจำนวนองค์ประกอบที่อาร์เรย์จะเก็บเป็น 3 ดังนั้นในวงเล็บเหลี่ยม เราจะบอกว่าอาร์เรย์จะเก็บองค์ประกอบได้ 3 องค์ประกอบ
  2. จากนั้นเราจะกำหนดค่าให้กับแต่ละองค์ประกอบของอาร์เรย์ เราสามารถทำได้โดยการระบุชื่อตัวแปร + ตำแหน่งดัชนีในอาร์เรย์ ดังนั้น values[0] หมายความว่าเรากำลังจัดเก็บค่าในตำแหน่งแรกของอาร์เรย์ ในทำนองเดียวกัน ในการเข้าถึงตำแหน่งที่สอง เราใช้สัญลักษณ์ values[1] และอื่นๆ ต่อไปเรื่อยๆ

หมายเหตุ: – ใน Arrays ตำแหน่งดัชนีเริ่มต้นจาก 0

ขั้นตอน 3) ตอนนี้เรามาแสดงแต่ละองค์ประกอบของอาร์เรย์ในคอนโซล มาเพิ่มโค้ดด้านล่างเพื่อให้บรรลุเป้าหมายนี้

อาร์เรย์ใน C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication
{
 class Program
 {
  static void Main(string[] args) 
  {
   Int32[] value;
   value=new Int32[3];
   
   value[0]=1;
   value[1]=2;
   value[2]=3;
   
   Console.WriteLine(value[0]);
   Console.WriteLine(value[1]);
   Console.WriteLine(value[2]);
    
   Console.ReadKey(); 
  }
 }
}

Code คำอธิบาย:-

นี่เป็นส่วนง่ายๆ ที่เราเพียงแค่ใช้เมธอด Console.WriteLine เพื่อส่งค่าแต่ละค่าขององค์ประกอบไปยังคอนโซล

โปรดทราบว่าเรากำลังเข้าถึงแต่ละองค์ประกอบโดยใช้ชื่อตัวแปรอาร์เรย์พร้อมกับตำแหน่งดัชนี

หากป้อนโค้ดด้านบนถูกต้องแล้วและดำเนินการโปรแกรมจะแสดงผลลัพธ์ต่อไปนี้

Output:

อาร์เรย์ใน C#

จากเอาต์พุต คุณสามารถดูค่าทั้งหมดของอาร์เรย์ที่แสดงอยู่ในคอนโซลได้

วิธีการวนลูปผ่านอาร์เรย์ใน C# โดยใช้ foreach

การอ่านแต่ละองค์ประกอบโดยใช้ดัชนีนั้นใช้ได้ แต่จะยุ่งยากเมื่ออาร์เรย์มีค่าจำนวนมาก ลูป foreach ให้วิธีที่สะอาดกว่าในการเข้าถึงทุกองค์ประกอบของอาร์เรย์ตามลำดับโดยไม่ต้อง... tracสร้างตัวแปรดัชนีด้วยตนเอง

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

using System;
namespace DemoApplication
{
 class Program
 {
  static void Main(string[] args)
  {
   Int32[] values = new Int32[3] {1, 2, 3};
   foreach (Int32 item in values)
   {
    Console.WriteLine(item);
   }
   Console.ReadKey();
  }
 }
}

ตัวอย่างข้างต้นประกาศและกำหนดค่าเริ่มต้นให้กับอาร์เรย์ของจำนวนเต็มสามตัว จากนั้นวนลูปผ่านอาร์เรย์ด้วยคำสั่ง foreach ในแต่ละรอบการวนลูป ตัวแปรจะถูกกำหนดค่าใหม่ ชิ้น รับค่าถัดไป และ Console.WriteLine จะพิมพ์ค่าดังกล่าวออกมา ผลลัพธ์ที่ได้คือตัวเลข 1, 2 และ 3 บนบรรทัดแยกกัน

ข้อควรจำที่สำคัญเกี่ยวกับการใช้ foreach กับอาร์เรย์:

  • ตัวแปรลูปเป็นแบบอ่านอย่างเดียว ดังนั้น foreach จึงเหมาะสำหรับการอ่านค่ามากกว่าการเปลี่ยนแปลงค่าในตำแหน่งเดิม
  • เพื่อแก้ไของค์ประกอบขณะดูpingให้ใช้ลูป for ที่มีดัชนีแทน
  • ฟังก์ชัน foreach สามารถใช้งานได้กับอาร์เรย์มิติเดียว อาร์เรย์หลายมิติ และคอลเลกชันใดๆ ที่รองรับการวนซ้ำ

อาร์เรย์หลายมิติใน C#

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

คุณประกาศอาร์เรย์สองมิติโดยการใส่เครื่องหมายจุลภาคไว้ภายในวงเล็บเหลี่ยม เครื่องหมายจุลภาคแต่ละตัวจะเพิ่มมิติอีกหนึ่งมิติ ดังนั้น int[,] จึงเป็นอาร์เรย์สองมิติ และ int[,,] จึงเป็นอาร์เรย์สามมิติ จากนั้นจึงสามารถเข้าถึงองค์ประกอบต่างๆ ได้โดยใช้ดัชนีหนึ่งตัวต่อหนึ่งมิติ

using System;
namespace DemoApplication
{
 class Program
 {
  static void Main(string[] args)
  {
   int[,] matrix = new int[2, 2] { {1, 2}, {3, 4} };
   Console.WriteLine(matrix[0, 0]);
   Console.WriteLine(matrix[1, 1]);
   Console.ReadKey();
  }
 }
}

ในที่นี้ อาร์เรย์ matrix ประกอบด้วยสองแถวและสองคอลัมน์ ค่าของ matrix[0, 0] จะคืนค่า 1 และค่าของ matrix[1, 1] จะคืนค่า 4 จำนวนมิติจะถูกกำหนดเมื่อประกาศอาร์เรย์ ในขณะที่ขนาดของแต่ละมิติจะถูกกำหนดเมื่อสร้างอาร์เรย์

อาร์เรย์แบบหยักใน C#

อาร์เรย์แบบหยัก (Jagged array) คืออาร์เรย์ที่แต่ละองค์ประกอบเป็นอาร์เรย์อีกทีหนึ่ง ต่างจากอาร์เรย์หลายมิติแบบสี่เหลี่ยมผืนผ้า อาร์เรย์ภายในแต่ละตัวสามารถมีความยาวไม่เท่ากันได้ นี่คือเหตุผลที่อาร์เรย์แบบหยักมักถูกเรียกว่าอาร์เรย์ของอาร์เรย์ ความยืดหยุ่นนี้มีประโยชน์เมื่อแต่ละแถวมีจำนวนค่าที่แตกต่างกัน

คุณประกาศอาร์เรย์แบบไม่สม่ำเสมอโดยใช้เครื่องหมายวงเล็บเหลี่ยมสองชุด จากนั้นสร้างอาร์เรย์ภายในแต่ละชุดแยกกัน ตัวอย่างต่อไปนี้สร้างอาร์เรย์แบบไม่สม่ำเสมอ โดยแถวแรกเก็บค่าสามค่า และแถวที่สองเก็บค่าสองค่า

using System;
namespace DemoApplication
{
 class Program
 {
  static void Main(string[] args)
  {
   int[][] jagged = new int[2][];
   jagged[0] = new int[] {1, 2, 3};
   jagged[1] = new int[] {4, 5};
   Console.WriteLine(jagged[0][2]);
   Console.WriteLine(jagged[1][1]);
   Console.ReadKey();
  }
 }
}

นิพจน์ jagged[0][2] อ่านองค์ประกอบที่สามของแถวแรก ซึ่งคือ 3 และ jagged[1][1] อ่านองค์ประกอบที่สองของแถวที่สอง ซึ่งคือ 5 เนื่องจากแต่ละแถวเป็นอาร์เรย์แยกกัน อาร์เรย์แบบ jagged จึงใช้หน่วยความจำได้อย่างมีประสิทธิภาพเมื่อความยาวของแถวแตกต่างกัน แม้ว่าจะต้องมีขั้นตอนเพิ่มเติมในการเริ่มต้นอาร์เรย์ภายในทุกตัวก็ตาม

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

คุณสมบัติ `Length` จะส่งคืนจำนวนองค์ประกอบทั้งหมดในอาร์เรย์ C# ตัวอย่างเช่น `values.Length` จะให้ค่า 3 สำหรับอาร์เรย์ที่มีสามองค์ประกอบ สำหรับอาร์เรย์หลายมิติ `GetLength(dimension)` จะส่งคืนขนาดของแต่ละมิติที่ระบุ

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

อาร์เรย์มาตรฐานใน C# จะเก็บองค์ประกอบที่มีประเภทที่ประกาศไว้เพียงประเภทเดียว ดังนั้นจึงไม่อนุญาตให้ผสมประเภทต่างๆ หากต้องการเก็บองค์ประกอบที่มีประเภทต่างกัน ให้ประกาศอาร์เรย์ object[] หรือใช้คอลเลกชันเช่น ArrayList แต่ทั้งสองวิธีนี้จะทำให้ความปลอดภัยของประเภทในระหว่างการคอมไพล์ลดลง

เมธอด static Array.Sort จะจัดเรียงองค์ประกอบของอาร์เรย์ใน C# จากน้อยไปมากโดยคงค่าเดิมไว้ ส่งอาร์เรย์ไปยัง Array.Sort(values) แล้วใช้ Array.Sort แทนReverse จากนั้นจึงเรียงลำดับจากมากไปน้อย การเรียงลำดับใช้ได้กับตัวเลข สตริง และประเภทอื่นๆ ที่เทียบเคียงกันได้

เมธอด `Array.Copy` จะคัดลอกช่วงขององค์ประกอบจากอาร์เรย์หนึ่งไปยังอีกอาร์เรย์หนึ่ง ในขณะที่เมธอด `Clone` จะสร้างสำเนาแบบตื้นของอาร์เรย์ทั้งหมด การกำหนดค่าให้กับตัวแปรอาร์เรย์หนึ่งจะคัดลอกเฉพาะการอ้างอิงเท่านั้น ไม่ใช่ตัวองค์ประกอบภายใน

ข้อผิดพลาด IndexOutOfRangeException เกิดขึ้นเมื่อโค้ดเข้าถึงตำแหน่งอาร์เรย์ที่ไม่มีอยู่ เช่น values[5] ในอาร์เรย์สามองค์ประกอบ เนื่องจากอาร์เรย์ใน C# เริ่มต้นจากศูนย์ ดัชนีที่ถูกต้องจึงมีค่าตั้งแต่ 0 ถึง Length ลบหนึ่ง ตรวจสอบดัชนีก่อนเสมอ

ใช่แล้ว GitHub Copilot จะแนะนำการประกาศอาร์เรย์ การกำหนดค่าเริ่มต้น และตรรกะการวนซ้ำจากความคิดเห็นหรือชื่อเมธอดภายใน Visual Studio และ VS Code. Revโปรดตรวจสอบข้อเสนอแนะแต่ละข้อสำหรับการกำหนดขนาดและขอบเขตดัชนีที่ถูกต้อง เนื่องจาก Copilot อาจทำให้เกิดข้อผิดพลาดแบบคลาดเคลื่อนไปหนึ่งตำแหน่งและข้อผิดพลาดที่อยู่นอกช่วงได้

ML.NET แสดงเวกเตอร์คุณลักษณะและอินพุตของโมเดลเป็นอาร์เรย์ในภาษา C# โดยทั่วไปจะเป็นอาร์เรย์ float[] ข้อมูลสำหรับการฝึกอบรมจะถูกโหลดลงในอาร์เรย์หรือสแปน และการทำนายจะส่งคืนอาร์เรย์ของคะแนน ขนาดคงที่และการเข้าถึงดัชนีที่รวดเร็วของอาร์เรย์ทำให้มีประสิทธิภาพสำหรับไปป์ไลน์การเรียนรู้ของเครื่อง

สรุปโพสต์นี้ด้วย: