将全局变量设为int

时间:2018-11-15 11:10:25

标签: c# sql-server int

登录时,我想在不同的窗口中使用EmployeeId 。有什么好的解决方案?

因此,登录后,EmployeeId所有窗口public int

我们使用SQL Server登录。

2 个答案:

答案 0 :(得分:1)

假设应用程序是WinForms或WPF,则:

class Program
{
    public static int EmployeeId {get;set;}

}

class OtherWindow
{
    void Function()
    {
       int employeeId = Program.EmployeeId;

    }
}

如果您的应用是Web服务器或其他“多用户”系统,则需要找到其他方法。

答案 1 :(得分:0)

为什么不呢?如果您想将EmployeeId看作是一个全局变量,则可以实现如下所示的例程。但是请确保EmployeeId线程安全的

namespace MyNameSpace {
  ...
  public static class MyEnvironmentVariables {
    // Lazy<int> - let EmployerId be thread safe (and lazy)
    private static Lazy<int> GetEmployeeId = new Lazy<int>(() => {
      //TODO: implement it
      return ObtainEmployeeIdFromDataBase();
    });

    public static int EmployeeId {
      get {
        return GetEmployeeId.Value;
      }
    }
  }

然后在using static的帮助下,您可以看到它,就好像您有一个全局变量

  // static: we don't want to mention pesky MyEnvironmentVariables
  using static MyNameSpace.MyEnvironmentVariables;

  ...
  public class MyDifferentWindow {
    ...
    public void MyMethod() {
      // we can use EmployerId as if it's a global variable
      int id = EmployeeId;
      ...