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

ชนิด Range และตัวดำเนินการ ..

เลือกช่วงย่อยด้วยนิพจน์ช่วง

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

ทำความรู้จักชนิดข้อมูล Range

System.Range อธิบายส่วนย่อยของลำดับข้อมูลโดยใช้ Index เป็น จุดเริ่มต้นและ จุดสิ้นสุด จึงทำงานคู่กับตัวดำเนินการช่วง .. ได้อย่างลงตัวในการแสดงลำดับย่อย

using System;

Range r = 1..3;
Console.WriteLine(r.Start + ".." + r.End); // 1..3

ตัวดำเนินการ .. (ช่วง)

ตัวดำเนินการช่วง a..b สร้าง Range ตั้งแต่ดัชนี a (รวมจุดเริ่มต้น) ไปจนถึงดัชนี b (ไม่รวมปลายทาง) ดังนั้น 1..3 จึงครอบคลุมตำแหน่ง 1 และ 2

using System;

int[] data = { 10, 20, 30, 40, 50 };
int[] slice = data[1..3];
Console.WriteLine(string.Join(",", slice)); // 20,30

รวมจุดเริ่มต้น ไม่รวมจุดสิ้นสุด

จุดสิ้นสุดแบบไม่รวมปลายทางทำงานสอดคล้องกับลูป for นั่นคือจำนวนสมาชิกเท่ากับ end - start ช่วง 2..5 จึงให้ผลเป็นสมาชิกสามรายการ

using System;

int[] data = { 0, 1, 2, 3, 4, 5, 6 };
int[] slice = data[2..5];
Console.WriteLine(slice.Length);          // 3
Console.WriteLine(string.Join(",", slice)); // 2,3,4

ช่วงที่ไม่ระบุปลายด้านหนึ่ง

คุณสามารถละเว้นขอบเขตด้านใดด้านหนึ่งได้ ..3 หมายถึง "ตั้งแต่จุดเริ่มต้นจนถึง 3" และ 2.. หมายถึง "ตั้งแต่ 2 จนถึงจุดสิ้นสุด" ส่วน .. เพียงอย่างเดียวจะคัดลอกลำดับข้อมูลทั้งหมด

using System;

int[] d = { 10, 20, 30, 40, 50 };
Console.WriteLine(string.Join(",", d[..3])); // 10,20,30
Console.WriteLine(string.Join(",", d[2..])); // 30,40,50
Console.WriteLine(string.Join(",", d[..]));  // 10,20,30,40,50

ช่วงที่ใช้ดัชนีจากท้าย

ใช้ .. ร่วมกับ ^ เพื่อเลือกส่วนย่อยโดยอ้างอิงจากท้าย ^2.. หมายถึง "สมาชิกสองรายการสุดท้าย"

using System;

int[] d = { 1, 2, 3, 4, 5 };
Console.WriteLine(string.Join(",", d[^2..]));  // 4,5
Console.WriteLine(string.Join(",", d[..^1]));  // 1,2,3,4 (drop last)

Range ในฐานะค่าที่จัดเก็บได้

Range เป็นค่าที่คุณตั้งชื่อและนำกลับมาใช้ซ้ำกับชุดข้อมูลต่าง ๆ ที่ใช้หลักการกำหนดความยาวแบบเดียวกันได้

using System;

Range middle = 1..^1; // drop first and last
int[] a = { 0, 1, 2, 3, 4 };
Console.WriteLine(string.Join(",", a[middle])); // 1,2,3

Range.GetOffsetAndLength

เมื่อต้องการแปลงช่วงให้สอดคล้องกับความยาวที่แน่นอน ให้เรียกใช้ GetOffsetAndLength(length) เมธอดนี้คืนค่าออฟเซ็ตเริ่มต้นและความยาวของส่วนย่อย พร้อมจัดการดัชนีจากท้ายให้คุณ

using System;

Range r = ^3..^1;
var (offset, length) = r.GetOffsetAndLength(5);
Console.WriteLine(offset + " " + length); // 2 2

Range.All

Range.All แบบสแตติกมีค่าเท่ากับ .. และเลือกทั้งลำดับข้อมูล มีประโยชน์เมื่อส่งช่วงเป็นอาร์กิวเมนต์

using System;

Range whole = Range.All;
int[] d = { 9, 8, 7 };
Console.WriteLine(string.Join(",", d[whole])); // 9,8,7

การสร้าง Range โดยระบุอย่างชัดเจน

นอกจากใช้ตัวดำเนินการแล้ว คุณยังสามารถเรียกตัวสร้างหรือเมธอดสำหรับสร้าง Range.StartAt และ Range.EndAt เพื่อให้โค้ดชัดเจนขึ้นได้

using System;

Range a = new Range(1, 3);
Range b = Range.StartAt(2);
Range c = Range.EndAt(2);
Console.WriteLine(a + " | " + b + " | " + c);

ช่วงว่างและช่วงไม่ถูกต้อง

ช่วงที่จุดเริ่มต้นเท่ากับจุดสิ้นสุดจะให้ส่วนย่อยว่าง ช่วงที่จุดเริ่มต้นอยู่ถัดจากจุดสิ้นสุด (หลังจากแปลงตำแหน่งแล้ว) จะทำให้เกิดข้อผิดพลาดขณะตัดแบ่ง

using System;

int[] d = { 1, 2, 3, 4 };
Console.WriteLine(d[2..2].Length); // 0 (empty)
try { var _ = d[3..1]; }
catch (ArgumentOutOfRangeException) { Console.WriteLine("invalid range"); }

นำทุกอย่างมาประกอบกัน

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

using System;

int[] readings = { 5, 7, 9, 11, 13, 15 };
int[] window = readings[1..^1];
Console.WriteLine(string.Join(",", window)); // 7,9,11,13

ตรวจสอบความเข้าใจอย่างรวดเร็ว

ตรวจสอบให้แน่ใจว่าคุณเข้าใจความหมายของตัวดำเนินการช่วง

สรุปทบทวน

คุณได้เรียนรู้ว่า System.Range ใช้อธิบายส่วนย่อยด้วยตัวดำเนินการ ..

  • จุดเริ่มต้นรวมอยู่ด้วย ส่วนจุดสิ้นสุดไม่รวมอยู่ด้วย: จำนวนสมาชิก = end - start
  • สามารถละเว้นขอบเขตได้: ..3, 2.., ..
  • .. ใช้ร่วมกับ ^ เพื่อเลือกส่วนย่อยจากท้ายได้
  • GetOffsetAndLength(length) แปลงช่วงเป็นค่าตัวเลขที่แน่นอน

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

บทเรียน “ชนิด Range และตัวดำเนินการ ..” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “ชนิด Range และตัวดำเนินการ ..”

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

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

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

บทเรียน “ชนิด Range และตัวดำเนินการ ..” ใช้เวลานานแค่ไหน

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

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

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

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

  1. ชนิด Index และตัวดำเนินการ ^
  2. ชนิด Range และตัวดำเนินการ ..
  3. ช่วงกับอาร์เรย์และสตริง
  4. ชนิดข้อมูลแบบกำหนดเองที่รองรับช่วง
← กลับไปที่ C# Academy