Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C#

อธิบายแนวคิดของคลาสใน C#


คลาสเป็นหนึ่งในประเภทที่จำเป็นใน C # เราสามารถคิดว่าคลาสเป็นแบบพิมพ์เขียวสำหรับอ็อบเจ็กต์ที่เกี่ยวข้องกับโดเมนของปัญหา เป็นเทมเพลตที่เราสร้างวัตถุ กำหนดโครงสร้างและพฤติกรรมที่จะแชร์โดยชุดของวัตถุที่สร้างจากคลาสนี้ กล่าวง่ายๆ คลาสคือตัวตัดคุกกี้ และวัตถุก็คือตัวคุกกี้เอง

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

เราสามารถสร้าง class โดยใช้ class ตามด้วยชื่อ class

// User.cs
public class User{
   private string name;
   private int salary;
   public void Promote(){
      salary += 1000;
   }
}

ในตัวอย่างข้างต้น User คือคลาสที่แสดงถึงผู้ใช้ คลาสสรุปข้อมูลสองส่วน - ชื่อ และ เงินเดือน . สิ่งเหล่านี้เรียกว่าฟิลด์คลาส และเก็บชื่อผู้ใช้และเงินเดือน นอกจากนี้ยังมีเมธอดชื่อ Promote() ซึ่งขึ้นเงินเดือนของผู้ใช้

แต่ละคลาสมีตัวแก้ไขการเข้าถึงที่เกี่ยวข้องซึ่งควบคุมว่าคลาสอื่นจะมองเห็นได้หรือไม่ ต่อไปนี้คือค่าที่เป็นไปได้ห้าค่าที่เราสามารถจัดเตรียมให้กับตัวแก้ไขการเข้าถึงได้

ตัวแก้ไขการเข้าถึง คำอธิบาย
สาธารณะ ไม่จำกัดการเข้าถึง
ได้รับการปกป้อง จำกัดการเข้าถึงคลาสที่ได้รับ
ภายใน จำกัดการเข้าถึงแอสเซมบลี
ป้องกันภายใน จำกัดการเข้าถึงแอสเซมบลีหรือคลาสที่ได้รับ
ส่วนตัว ห้ามเข้าจากภายนอก

ในการสร้างอินสแตนซ์ของคลาส เราสามารถใช้ ใหม่ คำสำคัญ. ใหม่ ตัวดำเนินการคำนวณจำนวนไบต์ที่ข้อมูลของวัตถุต้องการและจัดสรรหน่วยความจำสำหรับวัตถุ จากนั้นจะส่งกลับตัวชี้ (เรียกอีกอย่างว่าการอ้างอิง) ไปยังวัตถุที่สร้างขึ้นใหม่

var alice = new User();
var bob = new User();

การอ้างอิงนี้จะถูกเก็บไว้ในตัวแปรทางด้านซ้ายของเครื่องหมาย =ในตัวอย่างข้างต้น อลิซและบ๊อบถือการอ้างอิงหรือตัวชี้ไปยังออบเจกต์ที่สร้างขึ้นใหม่

อธิบายแนวคิดของคลาสใน C#

ใน C# หลักการตั้งชื่อสำหรับคลาสตามหลัง PascalCase ซึ่งใช้อักษรตัวแรกของแต่ละคำเป็นตัวพิมพ์ใหญ่ในคำประสม เช่น StringBuilder, UserController เป็นต้น ไม่จำเป็นต้องสร้างคลาสในไฟล์ที่มีชื่อตรงกับชื่อคลาส อย่างไรก็ตาม มันเป็นแบบแผนที่ใช้โดยโปรเจ็กต์ C# ส่วนใหญ่

ตัวสร้าง

ในตัวอย่างข้างต้น เมื่อเราสร้างอินสแตนซ์ของคลาส User เช่น alice และ bob เราไม่ได้ระบุชื่อเริ่มต้นและเงินเดือนของพวกมัน บ่อยครั้งที่วัตถุที่สร้างขึ้นใหม่ต้องการข้อมูลบางอย่างเพื่อทำงาน และใช้ตัวสร้างเพื่อเริ่มต้นข้อมูลคลาส

เราสามารถเพิ่ม Constructor เพื่อให้ชื่อและเงินเดือนแก่ผู้ใช้ได้ดังนี้ −

public class User{
   private string name;
   private int salary;
   public User(string name, int salary){
      this.name = name;
      this.salary = salary;
   }
   public void Promote(){
      salary += 1000;
   }
}

การมีคอนสตรัคเตอร์ทำให้เราสามารถส่งต่อชื่อและเงินเดือนของผู้ใช้เมื่อสร้างอินสแตนซ์ใหม่

var alice = new User("Alice", 50000);
var bob = new User("Bob", 45000);

เป็นไปได้ที่จะมีคอนสตรัคเตอร์มากกว่าหนึ่งตัวในคลาส การมีคอนสตรัคเตอร์หลายตัวทำให้เราเริ่มต้นคลาสได้หลายวิธี ตัวอย่างเช่น เราอาจเพิ่มตัวสร้างอื่นที่ใช้เฉพาะชื่อผู้ใช้และกำหนดเงินเดือนเริ่มต้น

public User(string name){
   this.name = name;
   this.salary = 50000;
}

ตัวอย่าง

using System;
class Program{
   static void Main(){
      var alice = new User();
      alice.Print();

      var bob = new User();
      bob.Print();
      var chris = new User("Chris", 50000);
      chris.Print();
      var debs = new User("Debs", 45000);
      debs.Print();

      var scott = new User("Scott");
      scott.Print();
   }
}
public class User{
   private string name;
   private int salary;
   public User(){

   }
   public User(string name){
      this.name = name;
      this.salary = 50000;
   }
   public User(string name, int salary){
      this.name = name;
      this.salary = salary;
   }
   public void Promote(){
      salary += 1000;
   }
   public void Print(){
      Console.WriteLine($"{name}: {salary}");
   }
}

ผลลัพธ์

: 0
: 0
Chris: 50000
Debs: 45000
Scott: 50000