کلمه کلیدی protected یک اصلاحگر سطح دسترسی عضو است. یک عضو protected از داخل کلاسش و توسط کلاس هایی که از این کلاس ارث بری می کنند قابل دسترسی است.
مثال
یک عضو protected از یک کلاس فقط زمانی از طریق کلاس های مشتق شده قابل دسترسی است که آن دسترسی از از طریق کلاس مشتق شده اتفاق بیافتد. برای مثال، قطعه کد زیر را در نظر بگیرید:
class A { protected int x = 123; } class B : A { static void Main() { A a = new A(); B b = new B(); // Error CS1540, because x can only be accessed by // classes derived from A. // a.x = 10; // OK, because this class derives from A. b.x = 10; } }
قسمت a.x=10 یک خطا تولید می کند زیرا این انتساب در داخل متد ایستای Main صورت گرفته که نمونه ای از کلاس B نیست.
اعضای ساختار نمی توانند protected باشند زیرا struct ها ارث بری ندارند.
در این مثال، کلاس DerivedPoint از کلاس Point ارث بری کرده است. بنابراین شما می توانید از طریق کلاس مشتق شده مستقیما" به اعضای protected کلاس پایه دسترسی داشته باشید.
class Point { protected int x; protected int y; } class DerivedPoint: Point { static void Main() { DerivedPoint dpoint = new DerivedPoint(); // Direct access to protected members: dpoint.x = 10; dpoint.y = 15; Console.WriteLine("x = {0}, y = {1}", dpoint.x, dpoint.y); } } // Output: x = 10, y = 15
اگر سطح دسترسی x و y را به private تغییر دهید، کامپایلر پیغام خطاهای زیر را صادر خواهد کرد:
'Point.y' is inaccessible due to its protection level.
'Point.x' is inaccessible due to its protection level.