องค์ประกอบทูเพิลที่มีชื่อ
ตั้งชื่อฟิลด์ของทูเพิลให้สื่อความหมาย
องค์ประกอบทูเพิลที่มีชื่อ เป็นบทเรียน C# Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน C# Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส C# Academy มีบทเรียนทั้งหมด 4 บทเรียน
การตั้งชื่อองค์ประกอบของทูเพิล
แทนที่จะใช้ Item1/Item2 คุณสามารถตั้งชื่อให้องค์ประกอบของทูเพิลเพื่อให้โค้ดอ่านง่ายขึ้นได้: (int Id, string Name)
using System;
class Program
{
static void Main()
{
(int Id, string Name) user = (1, "Ada");
Console.WriteLine(user.Id + ": " + user.Name);
}
}ชื่อในค่าลิเทอรัล
คุณสามารถกำหนดชื่อโดยตรงขณะสร้างทูเพิล และคอมไพเลอร์จะจดจำชื่อเหล่านั้นไว้
using System;
class Program
{
static void Main()
{
var point = (X: 3, Y: 4);
Console.WriteLine("X=" + point.X + ", Y=" + point.Y);
}
}เหตุใดชื่อจึงช่วยให้ชัดเจนขึ้น
องค์ประกอบที่มีชื่อช่วยสื่อเจตนา result.Total ชัดเจนกว่า result.Item2 มาก
using System;
class Program
{
static void Main()
{
var result = (Count: 3, Total: 150);
Console.WriteLine("Avg: " + ((double)result.Total / result.Count).ToString("0.0"));
}
}ชื่อเป็นเพียงป้ายกำกับเสริม
ชื่อองค์ประกอบของทูเพิลเป็นเพียงความสะดวกขณะคอมไพล์ เบื้องหลัง ฟิลด์ยังคงเป็น Item1, Item2 และสามารถใช้ได้ทั้งสองชื่อ
using System;
class Program
{
static void Main()
{
var p = (Age: 30, City: "Rome");
Console.WriteLine(p.Age + " / " + p.Item1); // same value
Console.WriteLine(p.City + " / " + p.Item2);
}
}ทูเพิลที่มีชื่อในลายเซ็นของวิธีการ
วิธีการสามารถประกาศทูเพิลที่มีชื่อเป็นพารามิเตอร์หรือชนิดข้อมูลที่ส่งคืนได้ ทำให้ส่วนติดต่อการใช้งานอธิบายตัวเองได้
using System;
class Program
{
static (int Sum, int Product) Compute(int a, int b)
{
return (a + b, a * b);
}
static void Main()
{
var r = Compute(3, 4);
Console.WriteLine("Sum=" + r.Sum + ", Product=" + r.Product);
}
}การผสมชื่อกับตำแหน่ง
คุณสามารถตั้งชื่อให้องค์ประกอบบางรายการและปล่อยรายการอื่นไว้แบบระบุตำแหน่งได้ แม้ว่าการตั้งชื่อให้ทั้งหมดจะชัดเจนกว่า
using System;
class Program
{
static void Main()
{
var data = (Id: 7, "guest", Active: true);
Console.WriteLine(data.Id + ", " + data.Item2 + ", " + data.Active);
}
}ชื่อจากสมาชิกที่อนุมานได้
เมื่อสร้างทูเพิลจากตัวแปรที่มีชื่อ C# สามารถอนุมานชื่อองค์ประกอบที่ตรงกันให้โดยอัตโนมัติ
using System;
class Program
{
static void Main()
{
int width = 10, height = 5;
var size = (width, height); // names inferred from variables
Console.WriteLine("w=" + size.width + ", h=" + size.height);
}
}การปรับปรุงองค์ประกอบที่มีชื่อ
องค์ประกอบที่มีชื่อยังคงเป็นฟิลด์ที่เขียนค่าได้ ดังนั้นคุณจึงกำหนดค่าใหม่ให้ได้ขณะโปรแกรมทำงาน
using System;
class Program
{
static void Main()
{
var game = (Player: "A", Score: 0);
game.Score += 25;
Console.WriteLine(game.Player + " scored " + game.Score);
}
}ทูเพิลที่มีชื่อในรายการ
รายการของทูเพิลที่มีชื่ออ่านได้เกือบเหมือนแถวในตาราง
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
var people = new List<(string Name, int Age)>
{
("Ann", 30),
("Bob", 25)
};
foreach (var p in people)
Console.WriteLine(p.Name + " is " + p.Age);
}
}ความเท่ากันกับชื่อองค์ประกอบ
ชื่อไม่มีผลต่อความเท่ากัน ทูเพิลสองชุดจะเท่ากันเมื่อค่าของทูเพิลตรงกัน ไม่ว่าชื่อองค์ประกอบจะเป็นอย่างไร
using System;
class Program
{
static void Main()
{
var a = (X: 1, Y: 2);
var b = (A: 1, B: 2);
Console.WriteLine(a == b); // True - values match
}
}สรุปการใช้งานร่วมกัน
ทูเพิลที่มีชื่อผสานความกระชับของทูเพิลเข้ากับความอ่านง่ายของฟิลด์ที่มีชื่อ จึงเหมาะอย่างยิ่งสำหรับค่าที่วิธีการส่งคืนอย่างชัดเจน
using System;
class Program
{
static (bool Ok, string Message) Validate(int age)
{
if (age < 0) return (false, "Age cannot be negative");
return (true, "Valid");
}
static void Main()
{
var v = Validate(-1);
Console.WriteLine(v.Ok + ": " + v.Message);
}
}ตรวจสอบความเข้าใจอย่างรวดเร็ว
ทดสอบความเข้าใจของคุณเกี่ยวกับองค์ประกอบทูเพิลที่มีชื่อ
ทบทวน
องค์ประกอบทูเพิลที่มีชื่อ เช่น (int Id, string Name) ทำให้ทูเพิลอธิบายตัวเองได้ คุณเข้าถึงองค์ประกอบเหล่านี้ด้วยชื่อแทนที่จะใช้ Item1 สามารถประกาศชื่อ อนุมานชื่อจากตัวแปร และใช้ชื่อในลายเซ็นของวิธีการได้ ชื่อเป็นเพียงป้ายกำกับขณะคอมไพล์และไม่มีผลต่อความเท่ากัน ซึ่งจะเปรียบเทียบจากค่า
using System;
class Program
{
static void Main()
{
var user = (Id: 42, Name: "Kai");
Console.WriteLine(user.Name + " #" + user.Id);
}
}คำถามที่พบบ่อย
บทเรียน “องค์ประกอบทูเพิลที่มีชื่อ” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “องค์ประกอบทูเพิลที่มีชื่อ” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส C# Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส C# Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “องค์ประกอบทูเพิลที่มีชื่อ”
ตั้งชื่อฟิลด์ของทูเพิลให้สื่อความหมาย คุณปฏิบัติ C# Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน C# Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน C# Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน
บทเรียน “องค์ประกอบทูเพิลที่มีชื่อ” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน C# Academy นี้ได้ไหม
ได้ บทเรียน C# Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- พื้นฐาน Value Tuple
- องค์ประกอบทูเพิลที่มีชื่อ
- การแยกโครงสร้าง
- ทูเพิลเป็นค่าที่เมธอดส่งคืน