如何在 C# 控制台中调用存储在变量中的全局字典?

How to call globally dictionary stored in a variable in C# Console?

我有一个名为 users 的变量,它存储我定义的字典,我想全局调用 users 来访问它的所有值,但是当我尝试使用 public static var users 我得到一个错误说它只适用于本地。

var users 位于 Login.cs,我想将其传递给 Menu.cs

Login.cs

namespace Bank
{
    public class Login
    {
        public static void LoginMenu()
        {
            var users = new Dictionary<int, User>()
            {
                {1, new User {UserName="sachin",Password="sachin1",FirstName="Sachin",LastName="Karnik",BirthDate= new DateTime(2011,6,14),Balance=20000,CardNumber=012345}},
                {2, new User {UserName="dina",Password="dina1",FirstName="Dina",LastName="Meyers",BirthDate= new DateTime(2012,8,20),Balance=20000,CardNumber=023456}},
                {3, new User {UserName="andy",Password="andy1",FirstName="Andy",LastName="Rose",BirthDate= new DateTime(2010,2,11),Balance=20000,CardNumber=034567}},
            };   
         }     
     }
}

Menu.cs

namespace Bank
{
    public class Menu
    {
        public static void BankMenu()
        {
          foreach(var i in Enumerable.Range(1,3)){
            Console.Write(users[i].FirstName +"\n");
          }
        }
        
     }
     
}

正如@fredrik 所写,您已在函数内声明了变量,因此它在此函数外不可用。将声明移动到 class 范围。
您还应该注意到 var keywork 可能只出现在局部变量声明中。

你应该这样写:
Login.cs:

namespace Bank
{
    public class Login
    {
        public static Dictionary<int, User> users;
        public static void LoginMenu()
        {
            users = new Dictionary<int, User>(){
                {1, new User {UserName="sachin",Password="sachin1",FirstName="Sachin",LastName="Karnik",BirthDate= new DateTime(2011,6,14),Balance=20000,CardNumber=012345}},
                {2, new User {UserName="dina",Password="dina1",FirstName="Dina",LastName="Meyers",BirthDate= new DateTime(2012,8,20),Balance=20000,CardNumber=023456}},
                {3, new User {UserName="andy",Password="andy1",FirstName="Andy",LastName="Rose",BirthDate= new DateTime(2010,2,11),Balance=20000,CardNumber=034567}},
            };
        }     
   }
}

Menu.cs

namespace Bank
{
    public class Menu
    {
        public static void BankMenu()
        {
          foreach(var i in Enumerate.Range(1,3)){
            Console.Write(Login.users[i].FirstName +"\n");
          }
        }
        
     }
     
}