0Pricing
C# Academy · บทเรียน

คุณสมบัติที่สร้างตัวเข้าถึงอัตโนมัติ

ประกาศคุณสมบัติด้วยไวยากรณ์อัตโนมัติแบบกระชับ

คุณสมบัติที่สร้างตัวเข้าถึงอัตโนมัติ เป็นบทเรียน 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. คุณสมบัติที่สร้างตัวเข้าถึงอัตโนมัติ
  2. คุณสมบัติเต็มรูปแบบพร้อมฟิลด์สำรอง
  3. สมาชิกแบบมีนิพจน์เป็นตัวลำตัว
  4. ตัวทำดัชนี
← กลับไปที่ C# Academy