c# Hashset< string>Contains错误地返回false
本文关键字:错误 返回 false Contains Hashset string | 更新日期: 2023-09-27 18:07:15
我试图比较从数据库中填充的字符串的哈希集对对象的字符串属性。我知道它存在于哈希集中,但它总是返回false。
奇怪的是,我写了一个测试程序,它的行为符合我的预期。见下文
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
string test = "A";
HashSet<String>[] array = new HashSet<string>[1];
array[0] = new HashSet<string>();
Boolean isA = true;
Boolean isB = false;
array[0].Add("A");
if (array[0].Contains(test) && isA || isB)
if (test.Equals("A")) {
Console.WriteLine("A");
}
return;
}
}
}
另一方面,这没有。我需要为此编写一个自定义比较器吗?这不是自定义对象,我只是比较字符串。我知道字符串包含在哈希集中。
private readonly HashSet<string>[] cars = new HashSet<string>[5];
for (int i = 0; i < cars.Length; i++)
cars[i] = new HashSet<string>();
foreach (DataRow dr in dt.Rows)
{
switch (dr[0].ToString())
{
case "1":
cars[0].Add(dr[1].ToString());
break;
}
}
bool test = cars[0].Contains("A"); //Always returns false
尝试添加cars[0].Add(dr[1].ToString().Trim().ToUpper())
并检查