Restrictions on Properties

650710824 - Jakkapan Chompat

เนื้อหา

Properties คือ :

  • Properties คือ สมาชิกของคลาสที่ช่วยให้การอ่าน และ เขียนข้อมูลกับตัวแปรในคลาสทำได้สะดวกขึ้น โดยทำงานผ่านเมธอดภายในคลาส

Properties ในภาษา C# :

  • ในภาษา C# ตัวแปรที่เรียกว่า property เป็นเมธอดพิเศษที่เรียกว่า accessors ซึ่งช่วยให้การจัดการข้อมูลทำได้ง่ายขึ้น โดยที่ property จะประกอบไปด้วยเมธอดสองประเภท ได้แก่ เมธอด get ใช้สำหรับการอ่านค่าของตัวแปร หรือ เรียกใช้งานเมธอดอื่นภายในคลาส และเมธอด set ซึ่งใช้ในการกำหนดค่าจากภายนอกให้กับตัวแปรผ่าน property การใช้ property จึงช่วยเพิ่มความปลอดภัยและความสะดวกในการจัดการตัวแปรจากภายนอกคลาส

ตัวอย่างโค้ด ภาษา C# :

public class MyClass{
   private string name;
   public string Name {
      get { return name; } // get คือตัวช่วยที่ให้เราสามารถเข้าไปเรียกดูข้อมูลได้
      set { name = value; } // set คือตัวช่วยที่ให้เราสามารถเข้าไปเขียนข้อมูลได้
// value keyword คำสั่ง value ที่อยู่ใน set นั่นหมายถึงค่าที่ผู้ใช้ส่งมากำหนดให้ตอนเรียกใช้ property Name
   }
}

Restrictions on Properties ในภาษา C# :

  1. การส่งผ่านพารามิเตอร์ ref หรือ out ไปยัง เมธอด:

  • ในภาษา C# Properties ไม่สามารถส่งค่าแบบ ref หรือ out ไปยัง เมธอดได้ หมายความว่าเราจะไม่สามารถส่งค่าของ property ไปยัง เมธอดได้

  1. การ Overload Properties :

  • ในภาษา C# การ overload properties ไม่สามารถมีเมธอด get หรือ เมธอด set มากกว่า 1 ตัวสำหรับ property เดียวกันได้ ไม่งั้นจะทำให้เกิดการ error ได้

  1. การเปลี่ยนแปลงค่าตัวแปรในเมธอด get accessor :

  • ในภาษา C# Properties ไม่ควรเปลี่ยนแปลงค่าตัวแปรใน เมธอด get accessor เพราะ เมธอด get ถูกออกแบบมาสำหรับการดึงข้อมูล ไม่ใช่การแก้ไขค่าภายใน object

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

  1. ภาษา C :

  • ในภาษา C ไม่มี Properties แต่สามารถใช้ pointer เพื่อเข้าถึงค่าได้

  1. ภาษา Java :

  • ในภาษา Java มีเมธอด getter และ เมธอด setter สำหรับการเข้าถึงค่าและปรับค่าของตัวแปร ที่เหมือนกับ Properties ในภาษา C#

  1. ภาษา Python :

  • ในภาษา Python สามารถใช้ property decorator เพื่อสร้าง properties ได้ และสามารถเข้าถึงค่าได้โดยตรงผ่านค่าชื่อ proprety


ตัวอย่าง

ตัวอย่าง : Restrictions on Properties ในภาษา C# :

  1. การส่งผ่านพารามิเตอร์ ref หรือ out ไปยัง เมธอด :

  • ในภาษา C# Properties ไม่สามารถส่งค่าแบบ ref หรือ out ไปยัง เมธอด ได้ หมายความว่าเราจะไม่สามารถส่งค่าของ property ไปยัง เมธอด ได้

ตัวอย่างโค้ด ภาษา C# :

อธิบายเพิ่มเติม :

จากตัวอย่างโค้ด property ใช้ เมธอด get และ เมธอด set ในการทำงาน เราเลยไม่สามารถส่งค่าแบบ ref หรือ out ได้ เนื่องจาก เมธอด ไม่มีพื้นที่เดียวกันในหน่วยความจำหมือนตัวแปร

  1. การ Overload Properties :

  • ในภาษา C# การ overload properties ไม่สามารถมีเมธอด get หรือ เมธอด set มากกว่า 1 ตัวสำหรับ property เดียวกันได้ ไม่งั้นจะทำให้เกิดการ error ได้

ตัวอย่างโค้ด ภาษา C# :

ข้อผิดพลาดตอนคอมไพล์ :

อธิบายเพิ่มเติม :

จากตัวอย่างโค้ด เกิดการ error เพราะ มีเมธอด get มากกว่า 1 ตัวสำหรับ property เดียวกัน

  1. การเปลี่ยนแปลงค่าตัวแปรใน เมธอด get accessor :

  • ในภาษา C# Properties ไม่ควรเปลี่ยนแปลงค่าตัวแปรใน เมธอด get accessor เพราะ เมธอด get ถูกออกแบบมาสำหรับการดึงข้อมูล ไม่ใช่การแก้ไขค่าภายใน object

ตัวอย่างโค้ด ภาษา C# :

Ouput :

อธิบายเพิ่มเติม :

จากตัวอย่างโค้ด มีการเปลี่ยนค่า _number ใน เมธอด get accessor ด้วยคำสั่ง this._number = 5; ซึ่งไม่ถูกต้อง เพราะ เมธอด get ใช้เพื่ออ่านค่าเท่านั้น ไม่ใช่แก้ไขข้อมูลภายใน object


เปรียบเทียบภาษา C, Java, Python

  1. ภาษา C :

  • ในภาษา C ไม่มี Properties แต่สามารถใช้ pointer เพื่อเข้าถึงค่าได้

ตัวอย่างโค้ด ภาษา C :

Output :

  1. ภาษา Java :

  • ในภาษา Java มีเมธอด geter และ เมธอด setter สำหรับการเข้าถึงค่าและปรับค่าของตัวแปร ที่เหมือนกับ Properties ในภาษา C#

ตัวอย่างโค้ด ภาษา Java :

Output :

อธิบายเพิ่มเติม :

จากตัวอย่างโค้ด มีการสร้าง class Product พร้อมตัวแปรชื่อ title ในรูปแบบ private จากนั้นสร้าง เมธอด get และ เมธอด set

  • เมธอด getชื่อ getTitle ดึงค่าตัวแปร title จาก class

  • เมธอด set ชื่อ setTitle กำหนดค่าให้กับตัวแปร title ภายใน class

  1. ภาษา Python :

  • ในภาษา Python สามารถใช้ property decorator เพื่อสร้าง properties ได้ และสามารถเข้าถึงค่าได้โดยตรงผ่านค่าชื่อ proprety

ตัวอย่างโค้ด ภาษา Python :

อธิบายเพิ่มเติม :

จากตัวอย่างโค้ด มีการสร้าง class C ที่มี property ชื่อว่า x ซึ่งสามารถใช้เพื่ออ่านค่า (get) และ กำหนดค่า (set) ของตัวแปร _x ได้


คลิปนำเสนอ


สไลด์นำเสนอ


แหล่งที่มาอ้างอิง

  • ในเว็บนี้ใช้ศึกษาความหมายของ Properties คืออะไร

  • ในเว็บนี้นำตัวอย่างโค้ด Properties ในภาษา C# มาใช้

  • ในเว็บนี้ใช้ศึกษาหลักการทำงานของ Restrictions on Properties ในภาษา C# พร้อมกับนำตัวอย่างโค้ดมาใช้

  • ในเว็บนี้ใช้ศึกษาหลักการทำงานของ ref และ out ในภาษา C#

  • ในเว็บนี้ใช้ศึกษาหลักการทำงานของ Getter และ Setter ในภาษา Java

  • ในเว็บนี้ใช้ศึกษาหลักการทำงานของ property decorator เพื่อสร้าง properties ในภาษา Python พร้อมกับนำตัวอย่างโค้ดมาใช้

  • ในเว็บนี้ใช้ศึกษาหลักการทำงานของ Pointers ในภาษา C พร้อมกับนำตัวอย่างโค้ดมาใช้

  • ในเว็บนี้ใช้ศึกษาหลักการทำงานของ เมธอด get และ เมธอด set ในภาษา Java พร้อมกับนำตัวอย่างโค้ดมาใช้


Last updated