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

ทำไมเราไม่สามารถระบุตัวแก้ไขการเข้าถึงภายในอินเทอร์เฟซใน C #?


Interface method เป็นสัญญากับโลกภายนอกซึ่งระบุว่าคลาสที่ใช้อินเทอร์เฟซนี้ทำหน้าที่บางอย่าง

สมาชิกของส่วนต่อประสานนั้นเปิดเผยต่อสาธารณะเสมอ เนื่องจากจุดประสงค์ของอินเทอร์เฟซคือเพื่อให้ประเภทอื่นเข้าถึงคลาสหรือโครงสร้างได้

อินเทอร์เฟซสามารถมีตัวระบุการเข้าถึง เช่น การป้องกันหรือภายใน เป็นต้น ดังนั้นการจำกัด 'โลกภายนอก' ให้เป็นส่วนย่อยของ 'โลกภายนอกทั้งหมด'

ตัวอย่าง

interface IInterface{
   void Save();
}
class Program{
   static void Main(){
      Console.ReadLine();
   }
}

ตัวอย่างข้างต้นจะคอมไพล์อย่างถูกต้องโดยไม่มีข้อผิดพลาด

ก่อนหน้า C# 8 สมาชิกอินเทอร์เฟซเป็นแบบสาธารณะโดยค่าเริ่มต้น อันที่จริง หากคุณใส่ตัวแก้ไขการเข้าถึงบนสมาชิกอินเทอร์เฟซ (รวมถึงสาธารณะ) มันจะสร้างข้อผิดพลาดของคอมไพเลอร์

interface IInterface{
   Public void Save();
}
class Program{
   static void Main(){
      Console.ReadLine();
   }
}

โค้ดด้านบนแสดงข้อผิดพลาดเวลาคอมไพล์ใน c # 7.0 แต่ใน c # 8.0 จะคอมไพล์โดยไม่มีข้อผิดพลาด