คุณสมบัติที่สร้างตัวเข้าถึงอัตโนมัติ
ประกาศคุณสมบัติด้วยไวยากรณ์อัตโนมัติแบบกระชับ
คุณสมบัติที่สร้างตัวเข้าถึงอัตโนมัติ เป็นบทเรียน C# Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน C# Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส C# Academy มีบทเรียนทั้งหมด 4 บทเรียน
พร็อพเพอร์ตีคืออะไร
พร็อพเพอร์ตี มีลักษณะเหมือนฟิลด์เมื่อมองจากภายนอก แต่มีเมธอดตัวเข้าถึง (get และ set) อยู่เบื้องหลัง พร็อพเพอร์ตีช่วยให้คุณเปิดเผยข้อมูลได้โดยยังควบคุมวิธีการอ่านและเขียนข้อมูล
using System;
class Program
{
public string Name { get; set; }
static void Main()
{
var p = new Program();
p.Name = "Coddy";
Console.WriteLine(p.Name);
}
}ไวยากรณ์แบบสร้างอัตโนมัติ
พร็อพเพอร์ตีที่สร้างอัตโนมัติใช้ { get; set; } คอมไพเลอร์จะสร้างฟิลด์สำรองที่ซ่อนอยู่ให้คุณ จึงไม่ต้องเขียนฟิลด์นั้นด้วยตนเอง
using System;
class Person
{
public string FirstName { get; set; }
public int Age { get; set; }
}
class Program
{
static void Main()
{
var person = new Person { FirstName = "Ada", Age = 36 };
Console.WriteLine(person.FirstName + " is " + person.Age);
}
}เหตุผลที่ควรใช้พร็อพเพอร์ตีแทนฟิลด์
พร็อพเพอร์ตีสาธารณะช่วยให้ส่วนติดต่อการใช้งานมีความคงที่ ภายหลังคุณสามารถเพิ่มการตรวจสอบหรือเปลี่ยนวิธีจัดเก็บข้อมูลได้โดยไม่ทำให้โค้ดที่เรียกใช้เสียหาย ฟิลด์สาธารณะทำเช่นนี้ไม่ได้
using System;
class Account
{
public decimal Balance { get; set; }
}
class Program
{
static void Main()
{
var a = new Account();
a.Balance = 100.50m;
Console.WriteLine("Balance: " + a.Balance);
}
}พร็อพเพอร์ตีแบบสร้างอัตโนมัติที่อ่านได้อย่างเดียว
ละเว้น set เพื่อทำให้พร็อพเพอร์ตีอ่านได้อย่างเดียว พร็อพเพอร์ตีนี้จะกำหนดค่าได้เฉพาะในตัวสร้างหรือผ่านตัวกำหนดค่าเริ่มต้น จึงทำให้ค่าเป็นแบบเปลี่ยนแปลงไม่ได้โดยค่าเริ่มต้น
using System;
class Circle
{
public double Radius { get; }
public Circle(double radius)
{
Radius = radius;
}
}
class Program
{
static void Main()
{
var c = new Circle(5.0);
Console.WriteLine("Radius: " + c.Radius);
}
}ค่าเริ่มต้นของพร็อพเพอร์ตี
คุณสามารถกำหนดค่าเริ่มต้นให้พร็อพเพอร์ตีที่สร้างอัตโนมัติได้ด้วย = value; การกำหนดค่านี้จะทำงานเมื่อสร้างออบเจ็กต์ ก่อนเริ่มทำงานภายในตัวสร้าง
using System;
class Settings
{
public bool DarkMode { get; set; } = true;
public int Volume { get; set; } = 50;
}
class Program
{
static void Main()
{
var s = new Settings();
Console.WriteLine("DarkMode: " + s.DarkMode + ", Volume: " + s.Volume);
}
}ตัวกำหนดค่าแบบส่วนตัว
private set อนุญาตให้คลาสเปลี่ยนค่าภายในได้ ขณะเดียวกันก็ป้องกันโค้ดภายนอกไม่ให้แก้ไขค่า นี่เป็นรูปแบบการห่อหุ้มข้อมูลที่ใช้กันทั่วไป
using System;
class Counter
{
public int Count { get; private set; }
public void Increment()
{
Count++;
}
}
class Program
{
static void Main()
{
var counter = new Counter();
counter.Increment();
counter.Increment();
Console.WriteLine("Count: " + counter.Count);
}
}ตัวกำหนดค่าที่ใช้ได้เฉพาะตอนเริ่มต้น
ตัวเข้าถึง init (C# 9 ขึ้นไป) อนุญาตให้กำหนดค่าได้เฉพาะระหว่างการเริ่มต้นออบเจ็กต์เท่านั้น หลังจากสร้างออบเจ็กต์แล้ว ค่าจะถูกล็อก
using System;
class Product
{
public string Name { get; init; }
public decimal Price { get; init; }
}
class Program
{
static void Main()
{
var p = new Product { Name = "Book", Price = 12.99m };
Console.WriteLine(p.Name + ": " + p.Price);
}
}พร็อพเพอร์ตีในระดับการเข้าถึงต่าง ๆ
พร็อพเพอร์ตีใช้ตัวปรับเปลี่ยนการเข้าถึงตามปกติ คุณสามารถผสมระดับการเข้าถึงได้ เช่น ตัวอ่านแบบสาธารณะกับตัวกำหนดค่าแบบส่วนตัว หรือพร็อพเพอร์ตีภายในทั้งหมด
using System;
class User
{
public string Id { get; private set; }
public User(string id)
{
Id = id;
}
}
class Program
{
static void Main()
{
var u = new User("u-001");
Console.WriteLine("User Id: " + u.Id);
}
}พร็อพเพอร์ตีที่ดูเหมือนคำนวณค่า
พร็อพเพอร์ตีที่สร้างอัตโนมัติมีหน้าที่จัดเก็บข้อมูล ไม่ได้คำนวณค่า หากต้องการค่าที่คำนวณ คุณต้องใช้พร็อพเพอร์ตีแบบเต็ม ซึ่งจะกล่าวถึงในภายหลัง ตอนนี้ให้มองพร็อพเพอร์ตีที่สร้างอัตโนมัติเป็นพื้นที่จัดเก็บข้อมูลอย่างง่าย
using System;
class Rectangle
{
public double Width { get; set; }
public double Height { get; set; }
}
class Program
{
static void Main()
{
var r = new Rectangle { Width = 4, Height = 3 };
double area = r.Width * r.Height;
Console.WriteLine("Area: " + area);
}
}การอัปเดตพร็อพเพอร์ตีที่สร้างอัตโนมัติ
คุณสามารถอ่านและกำหนดค่าใหม่ให้พร็อพเพอร์ตีที่สร้างอัตโนมัติและกำหนดค่าได้กี่ครั้งก็ได้ เช่นเดียวกับตัวแปร
using System;
class Player
{
public int Score { get; set; }
}
class Program
{
static void Main()
{
var player = new Player();
player.Score = 10;
player.Score += 5;
player.Score *= 2;
Console.WriteLine("Score: " + player.Score);
}
}การประกอบทุกอย่างเข้าด้วยกัน
คลาสแบบจำลองโดยทั่วไปประกอบด้วยพร็อพเพอร์ตีที่สร้างอัตโนมัติเป็นส่วนใหญ่ บางรายการกำหนดค่าใหม่ได้ บางรายการกำหนดค่าได้เฉพาะตอนเริ่มต้น และบางรายการมีตัวกำหนดค่าแบบส่วนตัว วิธีนี้ช่วยให้คลาสกระชับและเข้าใจง่าย
using System;
class BankAccount
{
public string Owner { get; init; }
public decimal Balance { get; private set; }
public void Deposit(decimal amount)
{
Balance += amount;
}
}
class Program
{
static void Main()
{
var acct = new BankAccount { Owner = "Lin" };
acct.Deposit(250m);
Console.WriteLine(acct.Owner + ": " + acct.Balance);
}
}ตรวจสอบความเข้าใจ
ทดสอบความเข้าใจของคุณเกี่ยวกับพร็อพเพอร์ตีที่สร้างอัตโนมัติ
สรุปทบทวน
คุณได้เรียนรู้ว่า พร็อพเพอร์ตีที่สร้างอัตโนมัติใช้ { get; set; } พร้อมฟิลด์สำรองที่คอมไพเลอร์สร้างให้ รูปแบบต่าง ๆ ได้แก่ แบบอ่านได้อย่างเดียว { get; } การใช้ private set เพื่อควบคุมการเปลี่ยนค่า และการใช้ init สำหรับค่าที่กำหนดได้ครั้งเดียว พร็อพเพอร์ตีเหล่านี้เป็นวิธีเริ่มต้นในการเปิดเผยข้อมูลของคลาส
using System;
class Demo
{
public string A { get; set; } = "settable";
public string B { get; } = "read-only";
public string C { get; init; } = "init-only";
}
class Program
{
static void Main()
{
var d = new Demo { C = "changed-at-init" };
Console.WriteLine(d.A + ", " + d.B + ", " + d.C);
}
}คำถามที่พบบ่อย
บทเรียน “คุณสมบัติที่สร้างตัวเข้าถึงอัตโนมัติ” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “คุณสมบัติที่สร้างตัวเข้าถึงอัตโนมัติ” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- คุณสมบัติที่สร้างตัวเข้าถึงอัตโนมัติ
- คุณสมบัติเต็มรูปแบบพร้อมฟิลด์สำรอง
- สมาชิกแบบมีนิพจน์เป็นตัวลำตัว
- ตัวทำดัชนี