在vb中声明全局变量

use*_*942 1 vb.net winforms

用户单击按钮,会在用户输入密码的位置生成新表单?如何保留用户名的内存副本?

例如,在Web表单中,我可以使用Session("User").我怎么能用winforms复制这个?

谢谢

msa*_*het 6

您可以使用静态(在VB .NET中共享)对象

Public Class SessionInformation

   Public Shared Property UserPassword As String

End Class
Run Code Online (Sandbox Code Playgroud)

然后,您可以通过致电访问它

SessionInformation.UserPassword
Run Code Online (Sandbox Code Playgroud)

由于似乎有一些问题围绕这是否是一个有效的实现,我将解释为什么这不是最好的主意.

这会创建一个单独的实例,SessionInformation这意味着如果它在程序中的任何位置发生更改,则会影响程序的其余部分.

如果您不使用数据库(SQL,Access,文件等)来维护要在以后检索的对象的内存不足副本,则维护对象持久性可能很困难.实现此目的的最简单方法是使用存储在应用程序文件夹中的SQLCE数据库,并使用标准T-SQL存储所需的信息.但是,在密码的情况下,由于安全问题,这可能是不理想的.

或者登录和退出用户的更好方法是使用System.Security.Principal命名空间为您的应用程序创建用户.

  • 对不起,低估了这一点.没有有效的设计证明这些代码是合理的.使用适当的信息传递机制,而不是全局状态.或者更确切地说,如果您真的需要全局状态,那么实现适当的注册表以获得单点访问. (2认同)