การใช้ร่วมกับคุณสมบัติและชนิดฐาน
ส่งต่อพารามิเตอร์ไปยังชนิดฐานและคุณสมบัติ
การใช้ร่วมกับคุณสมบัติและชนิดฐาน เป็นบทเรียน C# Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน C# Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส C# Academy มีบทเรียนทั้งหมด 4 บทเรียน
การใช้ตัวสร้างหลักร่วมกับการสืบทอด
คลาสที่สืบทอดซึ่งมีตัวสร้างหลักสามารถส่งต่อพารามิเตอร์ไปยังคลาส base ได้โดยใช้ไวยากรณ์ : Base(args) ในส่วนหัว
using System;
class Animal(string name) {
public string Name => name;
}
class Dog(string name) : Animal(name) {
public string Speak() => Name + " says Woof";
}
Console.WriteLine(new Dog("Rex").Speak()); // Rex says Woofการส่งต่อพารามิเตอร์เพียงบางส่วน
คลาสที่สืบทอดสามารถรับพารามิเตอร์มากกว่าคลาส base และส่งต่อเฉพาะพารามิเตอร์ที่เกี่ยวข้องขึ้นไปได้
using System;
class Shape(string color) {
public string Color => color;
}
class Box(string color, int size) : Shape(color) {
public int Size => size;
}
var b = new Box("red", 5);
Console.WriteLine(b.Color + " " + b.Size); // red 5การแปลงอาร์กิวเมนต์ไปยังคลาส base
คุณสามารถคำนวณอาร์กิวเมนต์ของตัวสร้าง base จากพารามิเตอร์ของคลาสที่สืบทอดได้โดยตรงในส่วนหัว
using System;
class Label(string text) {
public string Text => text;
}
class UpperLabel(string text) : Label(text.ToUpper()) {
}
Console.WriteLine(new UpperLabel("hi").Text); // HIการเพิ่มพร็อพเพอร์ตีควบคู่กัน
ตัวสร้างหลักและพร็อพเพอร์ตีที่ประกาศอย่างชัดเจนสามารถอยู่ร่วมกันได้ ให้เริ่มต้นพร็อพเพอร์ตีจากพารามิเตอร์ตั้งแต่ตอนประกาศ
using System;
class Product(string name, decimal price) {
public string Name { get; } = name;
public decimal Price { get; set; } = price;
}
var p = new Product("Book", 12m);
p.Price = 10m;
Console.WriteLine(p.Name + " " + p.Price); // Book 10พารามิเตอร์ของ base และการใช้งานในคลาสที่สืบทอด
แม้จะส่งต่อไปยัง base แล้ว แต่พารามิเตอร์ของตัวสร้างหลักในคลาสที่สืบทอดก็ยังสามารถใช้ภายในเนื้อหาของคลาสนั้นได้
using System;
class Base(int id) {
public int Id => id;
}
class Item(int id, string label) : Base(id) {
public string Describe() => "#" + id + ": " + label;
}
Console.WriteLine(new Item(7, "Widget").Describe()); // #7: Widgetเรคคอร์ดและตัวสร้างหลัก
เรคคอร์ดใช้ตัวสร้างหลักเพื่อสร้างพร็อพเพอร์ตีสาธารณะที่เริ่มต้นได้เท่านั้นโดยอัตโนมัติ เรคคอร์ดแบบกำหนดตำแหน่งเป็นกรณีที่กระชับที่สุด
using System;
record Person(string First, string Last) {
public string Full => First + " " + Last;
}
Console.WriteLine(new Person("Ada", "Lovelace").Full); // Ada Lovelaceการสืบทอดเรคคอร์ด
เรคคอร์ดที่สืบทอดจะส่งต่อค่าไปยังเรคคอร์ด base ตามลำดับตำแหน่ง และสร้างชุดพร็อพเพอร์ตีที่รวมกัน
using System;
record Vehicle(string Make);
record Car(string Make, int Doors) : Vehicle(Make);
var c = new Car("Toyota", 4);
Console.WriteLine(c.Make + " " + c.Doors); // Toyota 4การตรวจสอบค่าก่อนเรียก base
หากต้องตรวจสอบค่า ให้ดำเนินการในตัวเริ่มต้นของพร็อพเพอร์ตีโดยใช้นิพจน์โยนข้อผิดพลาด ทั้งนี้การเรียก base ยังคงทำงานก่อน
using System;
class Base(string tag) { public string Tag => tag; }
class Node(string tag) : Base(tag) {
public string Tag2 { get; } =
tag.Length > 0 ? tag : throw new ArgumentException("empty");
}
Console.WriteLine(new Node("a").Tag); // aการผสมพารามิเตอร์ที่จับไว้กับพร็อพเพอร์ตี
คุณสามารถเก็บพารามิเตอร์บางรายการไว้เป็นสถานะส่วนตัวที่จับค่าไว้ และเปิดเผยรายการอื่นเป็นพร็อพเพอร์ตี เพื่อปรับแต่งส่วนติดต่อสาธารณะให้เหมาะสม
using System;
class Order(int id, decimal total) {
public decimal Total { get; } = total; // public
public string Reference() => "ORD-" + id; // id stays private
}
var o = new Order(42, 99m);
Console.WriteLine(o.Reference() + " " + o.Total); // ORD-42 99ค่าเริ่มต้นของพร็อพเพอร์ตี
พร็อพเพอร์ตีที่ไม่ได้เชื่อมโยงกับพารามิเตอร์ยังสามารถมีตัวเริ่มต้นเป็นค่าเริ่มต้นได้ และใช้ร่วมกับพารามิเตอร์ของตัวสร้างหลักได้อย่างอิสระ
using System;
class Session(string user) {
public string User { get; } = user;
public bool Active { get; set; } = true;
}
var s = new Session("kai");
Console.WriteLine(s.User + " " + s.Active); // kai Trueนำทุกอย่างมาประกอบกัน
คลาสที่สืบทอดซึ่งส่งต่อค่าไปยัง base เพิ่มพร็อพเพอร์ตีหนึ่งรายการ และเปิดเผยสมาชิกที่คำนวณค่า
using System;
class Employee(string name) {
public string Name => name;
}
class Manager(string name, int teamSize) : Employee(name) {
public int TeamSize { get; } = teamSize;
public string Title => Name + " (manages " + TeamSize + ")";
}
Console.WriteLine(new Manager("Sam", 5).Title); // Sam (manages 5)ตรวจสอบอย่างรวดเร็ว
ยืนยันว่าตัวสร้างหลักส่งต่อค่าไปยังคลาส base อย่างไร
สรุปทบทวน
คุณได้เรียนรู้การใช้ตัวสร้างหลักร่วมกับพร็อพเพอร์ตีและคลาส base
class D(...) : Base(args)จะส่งต่อค่าไปยัง base- อาร์กิวเมนต์ของ base สามารถคำนวณได้โดยตรงในส่วนหัว
- สามารถเริ่มต้นพร็อพเพอร์ตีจากพารามิเตอร์ตั้งแต่ตอนประกาศ
- เรคคอร์ดจะสร้างพร็อพเพอร์ตีสาธารณะที่เริ่มต้นได้เท่านั้นจากพารามิเตอร์แบบกำหนดตำแหน่ง
เรียนรู้ C# ด้วย AI tutor — ฟรี
เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป
- คอร์ส
- 93
- บทเรียน
- 346
คำถามที่พบบ่อย
บทเรียน “การใช้ร่วมกับคุณสมบัติและชนิดฐาน” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การใช้ร่วมกับคุณสมบัติและชนิดฐาน” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส C# Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส C# Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การใช้ร่วมกับคุณสมบัติและชนิดฐาน”
ส่งต่อพารามิเตอร์ไปยังชนิดฐานและคุณสมบัติ คุณปฏิบัติ C# Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน C# Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน C# Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน
บทเรียน “การใช้ร่วมกับคุณสมบัติและชนิดฐาน” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน C# Academy นี้ได้ไหม
ได้ บทเรียน C# Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- คอนสตรักเตอร์หลักในคลาส
- การจับพารามิเตอร์ในสมาชิก
- คอนสตรักเตอร์หลักกับโครงสร้าง
- การใช้ร่วมกับคุณสมบัติและชนิดฐาน