如何:控制变量的可用性 (Visual Basic)
通过指定变量的访问级别,控制变量的可用性。 访问级别确定哪些代码有权读取或写入变量。
成员变量(在模块级别和任何过程外部定义)默认具有公共访问权限,这意味着可以看到这些变量的任何代码都可以访问它们。 可以通过指定访问修饰符来对此进行更改。
局部变量(在过程中定义)名义上具有公共访问权限,但只有其过程中的代码才能访问它们。 无法更改局部变量的访问级别,但可以更改包含该变量的过程的访问级别。
有关详细信息,请参阅 Visual Basic 中的访问级别。
专用和公共访问
使变量仅能从其模块、类或结构内访问
使变量可从任何可以看到它的代码访问
对于成员变量,请将变量的
Dim
语句置于模块、类或结构内,但不要置于任何过程中。在
Dim
语句中包含 Public 关键字。可以从与程序集互操作的任何代码中读取或写入变量。
-或-
对于局部变量,请将变量的
Dim
语句放在过程内。不要在
Dim
语句中包含Public
关键字。可以从过程中的任何位置读取或写入变量,但不能从外部读取或写入变量。
Protected 和 Friend 访问
可以将变量的访问级别限制为其类、任何派生类或其程序集。 还可以指定这些限制的联合,允许从任何派生类中的代码或同一程序集中的任何其他位置的代码进行访问。 通过在同一声明中组合 Protected
和 Friend
关键字来指定此联合。
使变量只能从其类和任何派生类中访问
将变量的
Dim
语句放在类内,但不要置于任何过程中。在
Dim
语句中包含 Protected 关键字。可以从类中的任意位置以及派生自该变量的任何类中读取或写入变量,但不能从派生链中任何类外部读取或写入变量。
使变量只能从同一程序集内访问
将变量的
Dim
语句置于模块、类或结构内,但不要置于任何过程中。在
Dim
语句中包含 Friend 关键字。可以从模块、类或结构中的任何位置以及同一程序集中的任何代码读取或写入变量,但不能从程序集外部读取或写入变量。
示例
以下示例显示了具有 Public
、Protected
、Friend
、Protected Friend
和 Private
访问级别的变量声明。 请注意,当 Dim
语句指定访问级别时,无需包含 Dim
关键字。
Public Class classForEverybody
Protected Class classForMyHeirs
Friend stringForThisProject As String
Protected Friend stringForProjectAndHeirs As String
Private numberForMeOnly As Integer
.NET Framework 安全性
变量的访问级别越严格,恶意代码不当使用变量的可能性就越小。