在没有 "include" 的情况下使用什么
What to use in the absence of "include"
所以,我正在 VB.net 中编写一个小程序,我在徘徊是否有替代我在 C/C++ 中习惯使用的 include 语句?这不是让我所有的 classes 和函数 "public shared".
是他们的安全问题,还是将我希望在其他 .vb 文件中使用的所有 classes 或函数声明为 public 共享是一种不好的做法?
例如,假设我在 passwords.vb
中编写了一个密码散列函数,我想在 UI 文件 login.vb
中使用它,为此我将声明我的散列在 public class 中充当 public 共享函数(除非我错过了另一种方式)。这样我就可以通过使用类似于 password.Hash(STRING)
的内容来访问它,其中 password.
是对我的 password.vb 文件的引用。
现在在 C/C++ 中,我会在头文件中添加一个 include 语句,它也将定义我需要的所有内容。我知道头文件不存在,但没有其他方法可以包含一个单独的 .vb 文件,除了制作所有内容 public 之外?这对我来说似乎很奇怪,感觉可能有数百个 public classes/variables/functions 等等...不知何故是错误的方法吗?
我知道 .dll 引用是一种替代方法,但我真的不想让 20 个 .dll 文件与一个程序相关联(如果我可以帮助的话),或者除非它应该那样?
感谢您的帮助,我希望我的问题是有道理的。
好吧,如果你想要这种分离,你需要做一些额外的努力。
名称空间在 VB.net 中并没有真正强制执行,但您可以使用它们来安排您的代码,以便您可以使用 Imports Namespace
语句。
假设我们有这个虚拟 class,现在可以在您的代码中公开访问它而无需任何额外的努力
Module PasswordHandler
Public Function Hash(ByVal password As String) As String
Return password
End Function
End Module
但是,您可以根据需要更改模块的命名空间
Namespace Security
Module PasswordHandler
Public Function Hash(ByVal password As String) As String
Return password
End Function
End Module
End Namespace
这现在会 "hide" 程序中的模块,直到您在代码顶部使用 Imports ProgramName.Security
语句,如下所示:
Imports IncludeSampleVB.Security
Module Module1
Sub Main()
Dim salt As String = PasswordHandler.Hash("dummy")
End Sub
End Module
通过这种方式,您可以用您似乎更熟悉的方式构建代码 :) 顺便说一句,对于静态函数,您也可以简单地使用模块,它们不必共享 class es,正如你在这里看到的:Classes vs. Modules in VB.NET
所以,我正在 VB.net 中编写一个小程序,我在徘徊是否有替代我在 C/C++ 中习惯使用的 include 语句?这不是让我所有的 classes 和函数 "public shared".
是他们的安全问题,还是将我希望在其他 .vb 文件中使用的所有 classes 或函数声明为 public 共享是一种不好的做法?
例如,假设我在 passwords.vb
中编写了一个密码散列函数,我想在 UI 文件 login.vb
中使用它,为此我将声明我的散列在 public class 中充当 public 共享函数(除非我错过了另一种方式)。这样我就可以通过使用类似于 password.Hash(STRING)
的内容来访问它,其中 password.
是对我的 password.vb 文件的引用。
现在在 C/C++ 中,我会在头文件中添加一个 include 语句,它也将定义我需要的所有内容。我知道头文件不存在,但没有其他方法可以包含一个单独的 .vb 文件,除了制作所有内容 public 之外?这对我来说似乎很奇怪,感觉可能有数百个 public classes/variables/functions 等等...不知何故是错误的方法吗?
我知道 .dll 引用是一种替代方法,但我真的不想让 20 个 .dll 文件与一个程序相关联(如果我可以帮助的话),或者除非它应该那样?
感谢您的帮助,我希望我的问题是有道理的。
好吧,如果你想要这种分离,你需要做一些额外的努力。
名称空间在 VB.net 中并没有真正强制执行,但您可以使用它们来安排您的代码,以便您可以使用 Imports Namespace
语句。
假设我们有这个虚拟 class,现在可以在您的代码中公开访问它而无需任何额外的努力
Module PasswordHandler
Public Function Hash(ByVal password As String) As String
Return password
End Function
End Module
但是,您可以根据需要更改模块的命名空间
Namespace Security
Module PasswordHandler
Public Function Hash(ByVal password As String) As String
Return password
End Function
End Module
End Namespace
这现在会 "hide" 程序中的模块,直到您在代码顶部使用 Imports ProgramName.Security
语句,如下所示:
Imports IncludeSampleVB.Security
Module Module1
Sub Main()
Dim salt As String = PasswordHandler.Hash("dummy")
End Sub
End Module
通过这种方式,您可以用您似乎更熟悉的方式构建代码 :) 顺便说一句,对于静态函数,您也可以简单地使用模块,它们不必共享 class es,正如你在这里看到的:Classes vs. Modules in VB.NET