【问题标题】:Regarding control and its access modifier关于控件及其访问修饰符
【发布时间】:2012-03-13 07:09:49
【问题描述】:

我总是看到,每当我们在设计图面上拖动任何控件时,它的访问修饰符都会受到保护......为什么它默认受到保护......为什么不是私有或公共的。

我从少数人那里得到的答案很少

1) 由于受保护的访问修饰符的作用域,我们知道,受保护的成员可以从声明它的类中访问,也可以从从声明该成员的类派生的任何类中访问。我们知道每个 .net 控件在内部都是一个类。 仅当通过派生类类型进行访问时,才能在派生类中访问基类的受保护成员。

2) 由于隐藏代码和 aspx.cs 文件之间的继承,它受到保护。如果您不希望它被继承,您可以将其设为私有或密封

3) 我认为你指向正确的方向....你会提供一个示例代码来显示 aspx 和后面的代码之间的关系以及重要的受保护修饰符的使用。

没有给出详细的答案。所以请详细告诉我有什么样的关系导致任何控件的访问修饰符受到保护?

【问题讨论】:

    标签: c# asp.net


    【解决方案1】:

    通常,当 ASP.NET 编译 aspx 页面时,生成的页面类继承自代码隐藏类。实例化实际控件和构建控件树的代码驻留在生成的类中。由于这种关系,设计器默认将protected 范围分配给在designer.cs 文件中声明的控制变量(与代码隐藏类基本相同)。由于受保护的范围,这些变量可以在实际的页面类(由 ASP.NET 编译器生成)中访问,因此页面类代码实际上可以将它们初始化为正确的控件实例。

    公共范围也可以工作,但它违反了封装,因为通常不需要在页面类之外引用页面上的控件实例。 private 范围将不起作用,因为这意味着控制变量只能在代码隐藏类中访问,因此,页面类(从代码隐藏类派生)无法将变量设置为控件实例。在这种情况下,您会发现控制变量在代码隐藏类中将具有空值。

    【讨论】:

    • 你能分享相同的链接吗?
    猜你喜欢
    • 2017-09-29
    • 2010-12-26
    • 2010-11-13
    • 2017-11-19
    • 2017-03-13
    • 2014-11-03
    • 2015-02-09
    • 1970-01-01
    • 2017-08-18
    相关资源
    最近更新 更多