在C#中,protected
關鍵字用于限制成員的訪問范圍
如果你想進一步限制protected
成員的訪問范圍,例如僅允許特定的派生類訪問,那么你可以使用protected internal
關鍵字。protected internal
允許在同一個程序集(Assembly)中的派生類訪問該成員,但不允許其他程序集中的類訪問。
然而,C#不支持更細粒度的訪問控制,例如僅允許特定的派生類訪問。要實現這種訪問控制,你需要使用其他方法,例如將成員設置為private
或internal
,并通過屬性或方法提供受控的訪問。
下面是一個示例,展示了如何使用protected internal
關鍵字:
public class BaseClass
{
protected internal string ProtectedInternalMember { get; set; }
}
public class DerivedClass1 : BaseClass
{
public void AccessProtectedInternalMember()
{
// 可以訪問,因為DerivedClass1是BaseClass的派生類
Console.WriteLine(ProtectedInternalMember);
}
}
public class DerivedClass2 : BaseClass
{
public void AccessProtectedInternalMember()
{
// 可以訪問,因為DerivedClass2也是BaseClass的派生類
Console.WriteLine(ProtectedInternalMember);
}
}
public class AnotherClass
{
public void AccessProtectedInternalMember(BaseClass baseClass)
{
// 無法訪問,因為AnotherClass不是BaseClass的派生類
// Console.WriteLine(baseClass.ProtectedInternalMember); // 編譯錯誤
}
}
在這個示例中,BaseClass
有一個protected internal
成員ProtectedInternalMember
。DerivedClass1
和DerivedClass2
都可以訪問這個成員,因為它們是BaseClass
的派生類。然而,AnotherClass
不能訪問這個成員,因為它不是BaseClass
的派生類。