none
关于WebForm中的私有静态变量? RRS feed

  • 问题

  • 有一WebForm继承自自定义的BasePage(主要方法GetUserName():获取当前登陆用户用户名),现页面中有如下代码:

    public partial class Default : BasePage
    {
        private static String _userName; 
        protected void Page_Load(object sender, EventArgs e)
        {
            _userName = GetUserName();
       }
       ...
    }
    

    请问:

    1 private static String _userName; 这样用可以吗?
    2 当多用户同时登录时,私有静态变量_userName的工作原理是什么?

    急盼回复!谢谢!

    2011年11月11日 8:59

答案

  • 1.可以这样用。

    2.静态就是静态,跟私有公有没有关系。都是所有对象共享该数据。
    如果是private,则不能用类名.static成员访问;如果是public,则可以用类名.static成员访问。

    斑竹们忙,我路过帮忙……


    .NET,我看行
    2011年11月12日 12:43

全部回复

  • 1.可以这样用。

    2.静态就是静态,跟私有公有没有关系。都是所有对象共享该数据。
    如果是private,则不能用类名.static成员访问;如果是public,则可以用类名.static成员访问。

    斑竹们忙,我路过帮忙……


    .NET,我看行
    2011年11月12日 12:43
  • 你好楼主:)

    另外一个建议——不建议你使用静态变量保存登录名字。因为Web本身就是基于信息共享的。如果你用static变量,那么每次只会保留最后一个成功登录者的姓名。

    建议:

    用Session直接保存登陆者姓名即可。因为Session是独享的——假设Button1是登录按钮

    public partial class Default : BasePage
    {
        protected void Button1_Click(object sender, EventArgs e)
        {
            //如果验证成功
    Session["userName"] = 数据库中读取的姓名;
    } ... }

       QQ我:讨论(Talk)
    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处
    2011年11月13日 8:45
    版主