C# C语言中的全局变量#

C# C语言中的全局变量#,c#,C#,也许有人能帮我解决数据库应用程序中的一个小问题 当用户使用用户名和密码登录到我的数据库时,我希望将用户名作为一个整体(所有表单等)存储并可被应用程序访问,以便执行的每一个操作都携带用户签名 我认为代码可能如下所示: namespace YourNamespaceName { class Variables { public static string strUser = "user name"; } } 我可以用Variables.strUser回忆起来

也许有人能帮我解决数据库应用程序中的一个小问题

当用户使用用户名和密码登录到我的数据库时,我希望将用户名作为一个整体(所有表单等)存储并可被应用程序访问,以便执行的每一个操作都携带用户签名

我认为代码可能如下所示:

namespace YourNamespaceName
{
    class Variables
    {
        public static string strUser = "user name";
    }
}
我可以用Variables.strUser回忆起来

但是,我不想将用户名的值硬编码到我的应用程序中。相反,我需要在运行时根据初始登录过程对其进行评估,并在应用程序运行期间保留用户名以供参考


感谢大家期待您的帮助。

如果您的应用程序保持会话状态,那么最好的解决方案是让变量在会话中活动,并从会话范围的变量访问它。

您可以创建某种“用户”类来存储用户信息,如用户名、密码、电子邮件等

您可以将该类实现为单例,并在用户首次登录时创建它

然后,无论何时需要用户信息,都可以使用“user”singleton类

namespace YourNamespaceName
{
    public static class Variables
    {
        private static string strUser;


        public static string User {
           get { return strUser; }
           set { strUser = value; }
        }
    }
}
您没有指定框架版本,但此代码适用于.NET2.0。使用:

Variables.User = "User name";

对于用户身份,应使用
IIdentity
界面。您可以从
GenericEntity
开始


有关详细信息,请参见。

您可以拥有如下所示的用户类,这样可以确保应用程序中只有一个用户实例。有关用法的详细信息,请参见实例属性和测试存根。如果愿意,您可以向该类添加更多属性

    using System;
        using System.Collections.Generic;
        using System.Linq;
        using System.Text;

        namespace yournamespace
        {
          public class User
          {
           private static User u;
           public string Username
           { get { return _username; } }

           private string _username;
           protected User(){}

          public void SetUserInformation(string uname)
          {

           _username = uname;

          }

         public static User Instance
         {
          get{
           if(u==null)
             u=new User();
           return u;
          }
        }

#if(TEST_USER)
    public static void Main(string[] args)
    {
      User u = User.Instance;
      u.SetUserInformation("testuser");
      User u1 = User.Instance;
    }
#endif
  }
}

这是一个变量——只需分配适合它的变量即可。如:YourNamespaceName.Variables.strUser=“Jimmy”;我不认为它是asp.net,它是win forms。是的,它是win forms应用程序-我不知道你所说的会话状态或会话范围变量是什么意思:sMy bad session指事务的持续时间,因此如果你保持会话状态(例如,与数据库连接的持续时间可以是你的会话)您将维护一个仅在会话期间有效的变量集合,在会话无效时清除这些变量。但这可能超出了你需要的范围,所以我会在其他答案中使用其他建议。