我正试图在C#中创建一个字典来存储密码。
你能帮帮我吗?我对这个和Stuck都不熟悉。我正在尝试创建
public class PasswordPool
{
static void Passwords()
{
ICollection<KeyValuePair<String, String>> openWith =
new Dictionary<String, String>();
openWith.Add(new KeyValuePair<String, String>("User1", "Password"));
openWith.Add(new KeyValuePair<String, String>("User2", "Password"));
openWith.Add(new KeyValuePair<String, String>("User3", "Password"));
}
}
这个代码对我来说不太好。你能告诉我缺少什么
这里有一些问题。
Passwords
是静态和私有的原因是什么(如果类成员没有显式访问修饰符,它将是私有的(?由于它是私有的,所以不能在PasswordPool
类之外使用它。您每次都在
Passwords
方法中创建字典,但由于它是局部方法变量,因此在该方法之外没有任何用处。此外,由于Passwords
方法不返回任何内容,也不对该字典执行任何操作,因此它是无用的。ICollection<KeyValuePair<String, String>>
你真的需要它吗?为什么不简单地Dictionary<string, string>
?
如果我正确理解了你的目标,并且你正在尝试创建一些类存储密码,并且需要一些静态方法来访问它们,那么你可以尝试这样的方法:
public class PasswordPool
{
private static Dictionary<string, string> _Passwords;
private static void InitPasswords()
{
_Passwords = new Dictionary<string, string>();
_Passwords.Add("User1", "Password");
_Passwords.Add("User2", "Password");
_Passwords.Add("User3", "Password");
}
public static string GetPassword(string userName)
{
if (_Passwords == null)
InitPasswords();
string password;
if (_Passwords.TryGetValue(userName, out password))
return password;
// handle case when password for specified userName not found
// Throw some exception or just return null
return null;
}
}
这里dictionary是类的私有成员,所以它可以从PasswordPool
的任何方法访问,而GetPassword
是允许通过用户名获取密码的公共静态方法。