Dim vs Private/Public

∥☆過路亽.° 提交于 2019-12-07 04:54:30

问题


At the head of a module, I wish to declare some global variables for use in various subs/functions.

What is the difference between

Dim x as string and Private x as string / Public x as string, and when would I use one over the other?


回答1:


Private and public control the scope of the variable or object you're declaring.

Private will only allow members of the relative module/class/whatever to access the instance

public will allow anything in the same scope as the module/class/whatever to access it.

Dim defaults to either public or private, depending on what you're working in. A class for example, will default to private. I suggest reading up on encapsulation and OOP to get a better feel for this.




回答2:


They are different, but related, things.

Dim Statement (Visual Basic) [MSDN] tells us:

[Dim] Declares and allocates storage space for one or more variables.

and

The Dim keyword is optional and usually omitted if you specify any of the following modifiers: Public, Protected, Friend, Protected Friend, Private, Shared, Shadows, Static, ReadOnly, or WithEvents.

Access Levels in Visual Basic [MSDN] tells us:

Private (and Public, Protected, Friend, Protected Friend) are Access Modifiers which specify 'what code has permission to read it or write to it.'

and

At the module level, the Dim statement without any access level keywords is equivalent to a Private declaration. However, you might want to use the Private keyword to make your code easier to read and interpret.

so Private x As String is the equivalent of Dim Private x As String (although if you type this Visual Studio will remove the Dim)

and Dim x As String is equivalent to Private x As String except in Structures (where it is equivalent to Public x As String) and interfaces where declaring variables is not allowed - see Declaration Contexts and Default Access Levels (Visual Basic) [MSDN]



来源:https://stackoverflow.com/questions/7853298/dim-vs-private-public

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!