ไวยากรณ์นิพจน์คอลเลกชัน
กำหนดค่าเริ่มต้นให้อาร์เรย์ ลิสต์ และสแปนด้วยรูปแบบเดียวกัน
ไวยากรณ์นิพจน์คอลเลกชัน เป็นบทเรียน C# Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน C# Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส C# Academy มีบทเรียนทั้งหมด 4 บทเรียน
นิพจน์คอลเลกชัน (C# 12)
C# 12 นำเสนอ นิพจน์คอลเลกชัน ซึ่งเป็นไวยากรณ์วงเล็บเหลี่ยมชุดเดียวสำหรับสร้างอาร์เรย์ รายการ ช่วงหน่วยความจำ และชนิดอื่น ๆ แทนที่จะเขียน new int[] { 1, 2, 3 } คุณเขียนเพียง [1, 2, 3]
using System;
int[] numbers = [1, 2, 3, 4, 5];
Console.WriteLine(string.Join(",", numbers)); // 1,2,3,4,5ไวยากรณ์เดียว ใช้ได้กับเป้าหมายหลายชนิด
ค่าตามตัวอักษร [...] แบบเดียวกันนี้ใช้ได้ไม่ว่าเป้าหมายจะเป็นอาร์เรย์ List<T> หรือ Span<T> คอมไพเลอร์จะเลือกวิธีสร้างที่เหมาะสมให้
using System;
using System.Collections.Generic;
int[] arr = [1, 2, 3];
List<int> list = [4, 5, 6];
Span<int> span = [7, 8, 9];
Console.WriteLine(arr.Length + " " + list.Count + " " + span.Length);คอลเลกชันว่าง
นิพจน์คอลเลกชันว่างเขียนเพียง [] เท่านั้น ซึ่งชัดเจนกว่า Array.Empty<T>() หรือ new List<T>() และจะกำหนดชนิดตามเป้าหมายโดยอัตโนมัติ
using System;
using System.Collections.Generic;
int[] empty = [];
List<string> names = [];
Console.WriteLine(empty.Length + " " + names.Count); // 0 0การแทนที่ตัวเริ่มต้นที่ยืดยาว
นิพจน์คอลเลกชันช่วยตัดขั้นตอนที่ไม่จำเป็นออกจากไวยากรณ์ตัวเริ่มต้นแบบเดิม ลองเปรียบเทียบรูปแบบทั้งสองด้านล่าง
using System;
using System.Collections.Generic;
// old
List<int> oldWay = new List<int> { 1, 2, 3 };
// new
List<int> newWay = [1, 2, 3];
Console.WriteLine(oldWay.Count == newWay.Count); // Trueคอลเลกชันซ้อนกัน
คุณสามารถซ้อนนิพจน์คอลเลกชันเพื่อสร้างอาร์เรย์แบบหยักหรือลิสต์ที่มีลิสต์ย่อยได้
using System;
int[][] grid = [[1, 2], [3, 4], [5, 6]];
Console.WriteLine(grid[1][0]); // 3นิพจน์ในฐานะองค์ประกอบ
องค์ประกอบสามารถเป็นนิพจน์ใดก็ได้ รวมถึงตัวแปร การเรียกใช้เมธอด และการคำนวณทางคณิตศาสตร์
using System;
int x = 10;
int[] values = [x, x * 2, x + 5, Math.Abs(-3)];
Console.WriteLine(string.Join(",", values)); // 10,20,15,3หมายเหตุเกี่ยวกับหลายมิติ
นิพจน์คอลเลกชันสร้างอาร์เรย์แบบ หยัก (int[][]) ไม่ใช่อาร์เรย์แบบสี่เหลี่ยม (int[,]) อาร์เรย์แบบสี่เหลี่ยมยังคงใช้ไวยากรณ์เฉพาะของตนเอง
using System;
int[][] jagged = [[1, 2, 3], [4, 5]];
Console.WriteLine(jagged[0].Length + " " + jagged[1].Length); // 3 2การทำงานกับ Span
เนื่องจากนิพจน์คอลเลกชันสามารถกำหนดเป้าหมายเป็น Span<T> และ ReadOnlySpan<T> ได้ คอมไพเลอร์จึงอาจจัดสรรหน่วยความจำบนสแตก ซึ่งช่วยหลีกเลี่ยงขยะบนฮีปสำหรับข้อมูลอายุสั้น
using System;
ReadOnlySpan<int> stackData = [1, 2, 3, 4];
int total = 0;
foreach (int n in stackData) total += n;
Console.WriteLine(total); // 10การส่งคอลเลกชันไปยังเมธอด
เมื่อชนิดของพารามิเตอร์เป็นคอลเลกชัน คุณสามารถส่งนิพจน์คอลเลกชันโดยตรงตรงจุดเรียกใช้ได้
using System;
static int Sum(int[] xs) {
int t = 0;
foreach (int x in xs) t += x;
return t;
}
Console.WriteLine(Sum([2, 4, 6])); // 12ความอ่านง่ายที่เหนือกว่า
นิพจน์คอลเลกชันมีประโยชน์อย่างมากในโค้ดที่มีข้อมูลจำนวนมาก เช่น ตารางการกำหนดค่าหรือชุดข้อมูลทดสอบ เพราะวงเล็บช่วยให้ความสนใจอยู่ที่ค่าต่าง ๆ
using System;
string[] days = ["Mon", "Tue", "Wed", "Thu", "Fri"];
Console.WriteLine(days[^1]); // Friการคืนค่าคอลเลกชัน
เมธอดสามารถคืนค่านิพจน์คอลเลกชันได้ โดยชนิดที่คืนค่าจะเป็นตัวกำหนดแนวทางการสร้าง
using System;
static int[] Primes() => [2, 3, 5, 7, 11];
Console.WriteLine(string.Join(",", Primes())); // 2,3,5,7,11ตรวจสอบความเข้าใจอย่างรวดเร็ว
ตรวจสอบความเข้าใจพื้นฐานเกี่ยวกับนิพจน์คอลเลกชันของคุณ
สรุปทบทวน
คุณได้เรียนรู้ไวยากรณ์นิพจน์คอลเลกชันของ C# 12
[1, 2, 3]ใช้แทนตัวเริ่มต้นที่ยืดยาว[]คือคอลเลกชันว่าง- นิพจน์นี้กำหนดชนิดตามเป้าหมายได้ จึงใช้ได้กับอาร์เรย์ ลิสต์ และสแปน
- วงเล็บที่ซ้อนกันจะสร้างอาร์เรย์แบบหยัก
คำถามที่พบบ่อย
บทเรียน “ไวยากรณ์นิพจน์คอลเลกชัน” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “ไวยากรณ์นิพจน์คอลเลกชัน” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส C# Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส C# Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “ไวยากรณ์นิพจน์คอลเลกชัน”
กำหนดค่าเริ่มต้นให้อาร์เรย์ ลิสต์ และสแปนด้วยรูปแบบเดียวกัน คุณปฏิบัติ C# Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน C# Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน C# Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “ไวยากรณ์นิพจน์คอลเลกชัน” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน C# Academy นี้ได้ไหม
ได้ บทเรียน C# Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- ไวยากรณ์นิพจน์คอลเลกชัน
- องค์ประกอบกระจาย
- การอนุมานชนิดของคอลเลกชันจากเป้าหมาย
- ตัวสร้างคอลเลกชัน