ชนิด 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,3Range.GetOffsetAndLength
เมื่อต้องการแปลงช่วงให้สอดคล้องกับความยาวที่แน่นอน ให้เรียกใช้ GetOffsetAndLength(length) เมธอดนี้คืนค่าออฟเซ็ตเริ่มต้นและความยาวของส่วนย่อย พร้อมจัดการดัชนีจากท้ายให้คุณ
using System;
Range r = ^3..^1;
var (offset, length) = r.GetOffsetAndLength(5);
Console.WriteLine(offset + " " + length); // 2 2Range.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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- ชนิด Index และตัวดำเนินการ ^
- ชนิด Range และตัวดำเนินการ ..
- ช่วงกับอาร์เรย์และสตริง
- ชนิดข้อมูลแบบกำหนดเองที่รองรับช่วง