【问题标题】:acess modifiers ,visual basic, object´s scope versus classes´s scope访问修饰符,visual basic,对象范围与类范围
【发布时间】:2019-02-23 23:57:20
【问题描述】:

我是 vb.net 的初学者(自学)。我试图了解对象范围与类范围的区别。一个对象是私有的,而你的类是公共的?例子:

 Public Class car 'create a class carro
    private car_name As String
   End Class

Public Class Form1 'create two objects of the class carro
    Public obj_1 As New carro
    Private Obj_2 As New carro
end class

'objcar_1 和 objcar_2 在访问修饰符方面有什么区别?公共类如何生成私有对象?关于这个问题的任何书籍推荐?提前致谢。 (来自巴西的问候)

enter image description here

【问题讨论】:

  • 没有所谓的“私有对象”。对象没有访问修饰符。在您的示例中,您正在谈论私有字段,即成员变量,而不是私有对象。您可以有两个字段,其中一个是私有的,另一个是公共的,并将相同的对象分配给两者。

标签: vb.net


【解决方案1】:

在类的上下文中,Public 表示可以从程序集(.NET EXE 或 DLL)外部访问该类,而 Friend 表示只能从内部访问。这在 EXE 中没有什么区别,但在 DLL 中很重要。任何引用您的 DLL 的人都可以访问所有 Public 类,但不能访问 Friend 类。这意味着您可以定义一个仅用作您自己项目中的助手的类并将其声明为Friend,然后其他人将无法引用您的 DLL 并访问该类。

Private 仅适用于在另一个类中声明的类。这是您很少应该做的事情,但如果内部类仅用于涉及外部类的情况,则它是有意义的。 PublicFriend 对嵌套类的含义与对其他类的含义完全相同,但Private 意味着嵌套类只能在那个外部类中使用。即使外部类被声明为Public,嵌套类实际上并不存在于外部类之外的任何代码。

字段和其他成员(属性、方法、事件)遵循与嵌套类相同的规则。如果它们是Public,那么任何可以访问该类的代码也可以访问该成员。如果它们被声明为Friend,那么即使它们所属的类被声明为Public,它们也不能在声明它们的程序集之外访问。如果它们是Private,那么它们只能在声明它们的类中被访问,即使类是Public

基本上,类的访问修饰符决定了该类型的访问级别及其成员的最大访问级别。任何声明的访问级别高于其声明的类型的成员将有效地采用该类型的访问级别,而访问级别较低的成员将采取相应的行动。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-28
    • 1970-01-01
    相关资源
    最近更新 更多