RPM*_*984 40
每个人的答案都是类似的(MSDN的定义和/或摘录/链接),所以试图回答你原来的3个问题:
意义:
标有"受保护"的任何字段表示它仅对自身和任何子项(从中继承的类)可见.您将注意到在模型后面的ASP.NET Web窗体代码中,事件处理程序(例如Page_Load)被标记为"受保护".这是因为ASPX Markup文件实际上是从代码隐藏文件继承的(查看@Page指令来证明这一点).
我们为什么使用它:
受保护的可访问性修饰符的常见用途是让子级访问它的父级属性.您可能有一个基类,许多子类派生自该基类.此基类可能具有公共属性.这是受保护财产的一个好例子 - 便于共同逻辑的重复使用和集中维护.
好处:
类似的问题"为什么我们使用它?" 但基本上它给出了对属性的粗粒度控制.你不能只想到"当你使用受保护的"时.更多的是选择何时使用哪个辅助功能修饰符(私有,公共,内部,受保护).因此,任何可访问性修饰符的好处都是相同的 - 提供健壮且一致的对象模型,最大化代码重用并最大限度地降低与错误公开的代码相关的安全风险.
希望有所帮助.
Kla*_*sen 19
正如其他人已经指出的那样:
protected关键字是成员访问修饰符.受保护的成员可在其类和派生类实例中访问.
这是一个小例子:
public class A
{
protected string SomeString;
public string SomeOtherString;
}
public class B : A
{
public string Wrapped
{
get { return this.SomeString; }
}
}
...
var a = new A();
var s = a.SomeOtherString; // valid
var s2 = a.SomeString; // Error
var b = new B();
var s3 = b.Wrapped; // valid
Run Code Online (Sandbox Code Playgroud)
And*_*son 12
"受保护的成员可以从声明它的类中访问,也可以从声明该成员的类派生的任何类中访问."
看到
http://msdn.microsoft.com/en-us/library/bcd5672a(VS.71).aspx
另一个答案提供的定义.为什么这样好?当protected向基类提供对基类实现的访问时,您不必将数据/代码从基类复制到其派生类,而不会不必要地暴露于不受限制的外部使用public.