Properties in C#

โซเฟีย มาร์ติลา 650710214

ก่อนที่จะพูดถึงเรื่องคุณสมบัติ เรามาดูก่อนว่าทำไมแนวคิดเรื่องคุณสมบัติจึงเข้ามาอยู่ใน C# เหตุผลมีอยู่สองประการ:

  • หากสมาชิกของคลาสเป็นแบบส่วนตัว คลาสอื่นใน C# จะสามารถอ่าน เขียน หรือคำนวณค่าของฟิลด์นั้นได้อย่างไร

  • หากสมาชิกของคลาสเป็นสาธารณะ คลาสอื่นก็อาจใช้สมาชิกนั้นในทางที่ผิดได้

ตัวอย่าง:

  • c#

// C# program to illustrate the problems
// with public and private members
using System;

// public class
public class C1
{
	
	// public data members
	public int rn;
	public string name;
	
	// private field
	// private int marks = 35;

}

// another public class
public class C2
{
	
// Main Method
public static void Main(string[] args)
{
	
	// Creating object of C1 class
	C1 obj = new C1();
	
	// setting values to public
	// data members of class C1
	obj.rn = 10000;
	obj.name = null;
	
	// setting values to private
	// data members of class C1
	// obj.mark = 0;
	
	// display result
	Console.WriteLine("Name: {0} \nRoll No: {1}", obj.name, obj.rn);
	
}
}

เอาท์พุต:

Name:  
Roll No: 10000

คำอธิบาย:จากภาพด้านบน จะเห็นว่าสมาชิกสาธารณะของคลาส C1 สามารถเข้าถึงได้โดยคลาส C2 และการใช้อ็อบเจ็กต์ "obj" ของ C1 สามารถให้ค่าแก่สมาชิกได้ เช่น ชื่อจะได้รับค่าเป็น null แต่เราไม่ต้องการให้ค่านี้เป็นค่าว่าง C2 ไม่สามารถให้ค่าแก่สมาชิก "marks" ได้เนื่องจาก C1 เป็นแบบส่วนตัว เพื่อทดสอบการเข้าถึงสมาชิกแบบส่วนตัว ให้ลบคำอธิบายและลองเรียกใช้งาน จากนั้นจะเห็นว่าคอมไพเลอร์จะแสดงข้อผิดพลาด ภาษาการเขียนโปรแกรมที่ไม่มีคุณสมบัติ ให้ใช้เมธอด getter และ setter เพื่อจัดเตรียมกลไกการเข้าถึงดังกล่าว

การใช้คุณสมบัติ

คุณสมบัติเป็นประเภทพิเศษของสมาชิกคลาสที่ให้กลไกที่ยืดหยุ่นในการอ่าน เขียน หรือคำนวณค่าของฟิลด์ส่วนตัว คุณสมบัติสามารถใช้ได้เหมือนกับว่าเป็นสมาชิกข้อมูลสาธารณะ แต่จริงๆ แล้วเป็นเมธอดพิเศษที่เรียกว่า ตัวเข้าถึง ซึ่งทำให้สามารถเข้าถึงข้อมูลได้ง่ายและช่วยส่งเสริมความยืดหยุ่นและความปลอดภัยของเมธอด การห่อหุ้มและซ่อนข้อมูลยังทำได้โดยใช้คุณสมบัติ โดยใช้เมธอดที่กำหนดไว้ล่วงหน้า ได้แก่ เมธอด "get" และ "set" ซึ่งช่วยในการเข้าถึงและแก้ไขคุณสมบัติ ตัวเข้าถึง:บล็อกของ "set" และ "get" เรียกว่า "ตัวเข้าถึง" การจำกัดการเข้าถึงคุณสมบัติถือเป็นสิ่งสำคัญมาก ตัวเข้าถึงมีสองประเภท ได้แก่ ตัวเข้าถึง get และตัวเข้าถึง set มีคุณสมบัติประเภทต่างๆ ขึ้นอยู่กับตัวเข้าถึง "get" และ "set":

  • คุณสมบัติการอ่านและเขียน:เมื่อคุณสมบัติมีทั้งวิธีการรับและตั้งค่า

  • คุณสมบัติแบบอ่านอย่างเดียว:เมื่อคุณสมบัติมีวิธีการรับเท่านั้น

  • คุณสมบัติเขียนเฉพาะ:เมื่อคุณสมบัติมีวิธีการที่กำหนดไว้เท่านั้น

  • คุณสมบัติที่ใช้งานโดยอัตโนมัติ:เมื่อไม่มีตรรกะเพิ่มเติมในตัวเข้าถึงคุณสมบัติและมีการแนะนำใน C# 3.0

  • ความทันสมัย: C# มีการพัฒนาอย่างต่อเนื่อง มีฟีเจอร์ใหม่ๆ ที่รองรับเทคโนโลยีสมัยใหม่ เช่น async/await, LINQ, generics

  • ประสิทธิภาพสูง: C# มีประสิทธิภาพใกล้เคียงกับ C++ แต่เขียนโค้ดได้ง่ายกว่า

  • ความปลอดภัย: มีระบบการจัดการหน่วยความจำอัตโนมัติ ช่วยลดความเสี่ยงในการเกิดข้อผิดพลาด

  • ครอบคลุม: สามารถใช้พัฒนาแอปพลิเคชันได้หลากหลายประเภท ทั้ง desktop, web, mobile, game

จุดเด่นของ C# เมื่อเทียบกับภาษาอื่นๆ

คุณสมบัติ
C#
Java
C
Python

วัตถุประสงค์หลัก

พัฒนาแอปพลิเคชัน Windows, .NET, เกม (Unity), เว็บแอปพลิเคชัน

พัฒนาแอปพลิเคชัน Android, เซิร์ฟเวอร์, เว็บแอปพลิเคชัน

พัฒนาซอฟต์แวร์ระบบปฏิบัติการ, ไดรเวอร์, เกม, แอปพลิเคชันประสิทธิภาพสูง

พัฒนาสคริปต์, วิทยาศาสตร์ข้อมูล, Machine Learning, เว็บแอปพลิเคชัน

การใช้งาน

Object-oriented

Object-oriented

Procedural, Object-oriented

Multi-paradigm (Procedural, Object-oriented, Functional)

การจัดการหน่วยความจำ

Garbage collection

Garbage collection

Manual

Garbage collection

ประสิทธิภาพ

สูง (ใกล้เคียง C++)

สูง

สูงมาก

ปานกลาง

ความง่ายในการเรียนรู้

ปานกลาง

ปานกลาง

ยาก

ง่าย

ชุมชนผู้ใช้

ใหญ่

ใหญ่ที่สุด

ใหญ่

ใหญ่ที่สุด

เครื่องมือสนับสนุน

Visual Studio (ครบวงจร)

Eclipse, IntelliJ IDEA

หลายตัวเลือก

หลายตัวเลือก

ระบบนิเวศ

.NET Framework, .NET Core

JVM

หลากหลาย

หลากหลาย

การเปรียบเทียบคุณสมบัติเด่น

C# เป็นภาษาโปรแกรมที่พัฒนาโดย Microsoft มีจุดเด่นในเรื่องของความทันสมัย การใช้งานที่หลากหลาย และการผสมผสานคุณสมบัติที่ดีของภาษาอื่นๆ มาไว้ด้วยกัน

650710214-Properties in C#

Slides

References

Properties c# คืออะไร

https://learn.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/properties

https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/

https://www.geeksforgeeks.org/c-sharp-properties/

https://www.javatpoint.com/c-sharp-properties

https://www.w3schools.com/cs/cs_properties.php

ความแตกต่างของแต่ละภาษา

https://expert-programming-tutor.com/tutorial/article/KCP004006001_Csharp_VS_Python.php

-https://thaioop.wordpress.com/2006/11/23/%E0%B8%95%E0%B8%AD%E0%B8%99-12-%E0%B9%80%E0%B8%9B%E0%B8%A3%E0%B8%B5%E0%B8%A2%E0%B8%9A%E0%B9%80%E0%B8%97%E0%B8%B5%E0%B8%A2%E0%B8%9A%E0%B8%A0%E0%B8%B2%E0%B8%A9%E0%B8%B2-c-%E0%B8%81%E0%B8%B1%E0%B8%9A/

-เปรียบเทียบกัน

เอกสารอย่างเป็นทางการของ Microsoft: https://docs.microsoft.com/en-us/dotnet/csharp/

C# Corner: https://www.c-sharpcorner.com/

Stack Overflow: https://stackoverflow.com/questions/tagged/c%23

Last updated