如何在 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");
}
}
}
}
我有一个名为 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");
}
}
}
}