即使关键字在字典中,containskey也总是返回false
本文关键字:返回 false containskey 关键字 字典 | 更新日期: 2023-09-27 17:59:04
我想检查字典是否包含关键字,但当我知道关键字在字典中时,它总是返回false
public static ConcurrentDictionary<string, blueinfo> blueprizes = new ConcurrentDictionary<string, blueinfo>();
public static ConcurrentDictionary<string, yellowinfo> yellowprizes = new ConcurrentDictionary<string, yellowinfo>();
public static List<string[]> ExecuteStringCommand(SQLiteCommand command, int columncount)
{
List<string[]> values = new List<string[]>();
SQLiteDataReader reader = command.ExecuteReader();
while (reader.Read())
{
List<string> row = new List<string>();
row.Add("f2e135cdfb28407081bcca9a99a3148b");
if (Program.blueprizes.ContainsKey(row[0]))//line always returns false
row.Add(Program.blueprizes[row[0]].Name1);
if (Program.yellowprizes.ContainsKey(row[0]))//line always returns false
row.Add(Program.yellowprizes[row[0]].Name2);
else
row.Add("Prize not found");
values.Add(row.ToArray());
}
reader.Close();
return values;
}
class blueinfo
{
static List<string> row = new List<string>();
public blueinfo(string[] dbdata)
{
Name1 = dbdata[0];
Id1 = dbdata[1];
row.Add(dbdata[1]);
}
public string Name1 { get; set; }
public string Id1 { get; set; }
public static string[] dbdata1
{
get { return row.ToArray(); }
}
}
class yellowinfo
{
public yellowinfo(string[] dbdata)
{
Name2 = dbdata[0];
Id2 = dbdata[1];
}
public string Name2 { get; set; }
public string Id2 { get; set; }
}
这是添加项目的代码:
List<string[]> values = new List<string[]>();
line="prize 1=f2e135cdfb28407081bcca9a99a3148b"
values.Add(line.Split('='));
foreach (string[] row in values)
{
if (blue == true)
Program.blueprizes.TryAdd(row[1], new blueinfo(row));
else
Program.yellowprizes.TryAdd(row[1], new yellowinfo(row));
}
- 你是说如果/如果/其他,不是说如果/其他吗
- 我想这就是为什么它为所有蓝色奖品输出"未找到奖品"的原因(它总是在其他奖品的决赛中分支)
代码中的许多错误/缺陷:
- 操作流和读卡器时首选"使用"指令(SQLiteDataReader)
- 类nmae应该以大写字母开头:BlueInfo,YellowInfo
- 调用Program.blueprizes.TryAdd而不检查返回的布尔值?那你怎么知道电话成功了?(出于多种原因,在并发词典中可能不会出现这种情况)
添加项目时使用row[1]
,检查密钥时使用row[0]
。也许这就是问题所在?我不知道row[0]
和row[1]
是什么,但它们可能并不完全相同。