Page cover image

Properties

กวินธิดา สุมาลี 650710822

Properties คือ สมาชิกของคลาสที่ทำให้สามารถอ่านหรือเขียนข้อมูลให้กับตัวแปรในคลาสได้ยืดหยุ่นและซับซ้อนขึ้น โดยภายใน Property จะมีเมธอดอยู่สองแบบคือ เมธอด get จะใช้ในการอ่านค่าของตัวแปรหรือเรียกใช้งานเมธอดอื่นภายในคลาส และเมธอด set เป็นเมธอดสำหรับกำหนดค่าจากภายนอกคลาสให้กับตัวแปรผ่าน Property ดังนั้นการใช้ Property จะมีประโยชน์ช่วยในเรื่องของความปลอดภัยและความยืดหยุ่นของการใช้คลาสตัวแปรในคลาสจากภายนอก

Properties ใน C# :

  • ฟิลด์ที่เป็น private จะไม่สามารถเข้าถึงได้โดยตรงจากคลาสอื่นได้ ซึ่งช่วยรักษาความปลอดภัยของข้อมูลภายในคลาส แต่ถ้าเราอยากเข้าถึงหรือปรับเปลี่ยนค่าของฟิลด์ใน private ตัว Properties จะทำหน้าที่เป็น ตัวกลาง ว่าเราจะให้เข้าถึงค่าของฟิลด์นั้นได้อย่างไร

  • สามารถเป็นแบบอ่านอย่างเดียว (read-only) หรือเขียนอย่างเดียว (write-only)

  • ตัวเข้าถึง (accessors) ที่ใช้สำหรับการตั้งค่า (set) หรือดึงค่า (get)

Example

class Person
{
  private string name; 
  public string Name   
  {
    get { 
    return name; 
    }
    set { 
    name = value; 
    }
  }
}

class Program
{
  static void Main(string[] args)
  {
    Person myObj = new Person();
    myObj.Name = "Liam";
    Console.WriteLine(myObj.Name);
  }
}

ฟิลด์จะใช้ตัวอักษรขึ้นต้นด้วยตัวเล็ก แต่ Properties จะขึ้นต้นด้วยตัวใหญ่

ส่วนของ get { return name; } คือการส่งค่าออกไป หรือเป็นการดึงค่าออกไปใช้ โดยไม่ต้องเข้าถึงฟิลด์โดยตรง

การเรียกใช้ get
Console.WriteLine(myObj.Name);

ส่วนของ set { name = value; } คือการตั้งค่าให้ Name เป็นค่าตามที่ value กำหนด ถ้าตามในโค้ดก็จะเป็น Peter

การเรียกใช้ set
Person myObj = new Person();
myObj.Name = "Peter";

Automatic Properties

เป็นการใช้วิธี short-hand ไม่จำเป็นต้องกำหนดฟิลด์ให้กับ property เขียนแค่ get และ set จะช่วยลดความซับซ้อนของโค้ดและทำให้เขียนได้ง่ายขึ้น

class Person
{
  public string Name  
  { get; set; }
}

class Program
{
  static void Main(string[] args)
  {
    Person myObj = new Person();
    myObj.Name = "Liam";
    Console.WriteLine(myObj.Name);
  }
}

เปรียบเทียบ Properties ในภาษา C# กับภาษา Java , C , Python

เนื่องจาก Properties ของ C# ไม่มีใน Java , C , Python แต่เนื่องจาก Properties มีการเข้าถึงแบบการใช้ get and set ซึ่ง Java ก็จะมีการใช้ getter and setter method ส่วนของ Python ก็จะมีการใช้ method property() ที่มีการใช้ getter and setter เหมือนกัน แต่ในส่วนของ C นั้น ไม่มีการใช้ getter and setter แต่สามารถใช้ Pointer ในการเข้าถึงและเปลี่ยนแปลงข้อมูล คล้ายกับ getter and setter

class Animal
{
  private string name; 

  public string Name   
  {
    get { 
    return name; 
    }  
    set { 
    name = value; 
    } 
  }
}

class Program
{
  static void Main(string[] args)
  {
    Animal animal = new Animal();
    animal.Name = "Cat"; 
    Console.WriteLine(animal.Name); 
  }
}

Output

Cat

สรุปความแตกต่าง C# , Java , Python , C

C#
Java
Python
C

เข้าถึงและเปลี่ยนค่าฟิลด์ได้โดยการใช้ Properties ที่มี getter และ setter

ไม่มีแนวคิดของ Properties แต่สามารถทำโดยการใช้ getter และ setter method

ใช้ property() method ในการ getter และ setter

ใช้ pointer ในการทำแนวคิดรูปแบบเดียวกับ Properties

Video Presentation

-

Presentation

Reference

  • ใช้ 4 เว็ปนี้ในการศึกษาความหมาย การทำงาน และโค้ดของ Properties

  • ใช้ในการศึกษา getter setter ของ Java

  • ใช้ในการศึกษา property() method ของ python

  • ใช้ในการศึกษา pointers ของ C

Last updated