日期:2014-05-17  浏览次数:21059 次

关于list<string> 的Contains 问题? 100分求解!!!!!!!

List<string> ListArray = new List<string>();
string str ="";


//生成str 并开始对ListArray进行填充

if(!ListArray.Contains(str)) //检查str 是否是ListArray中的项
{
    //填充
}

-----------------------------------------------------
无可厚非的,如果ListArray中存在的一个元素与str相同,str不添加到ListArray中。但是,洽洽问题出来了!

fun(str)
{
      lock(obj)
     {
      if(!ListArray.Contains(str)) //这里无法正常判断,即str是ListArray中的项,也返回false
         //填充
      else
         //不填充
     }
}

在这个函数里即使str是ListArray中的项,也返回false, 假使我们在做一个按钮,在按钮单击事件下再对ListArray使用ListArray.Contains 却能正常检查到是否存在相同项?

会是什么原因呢?


------解决方案--------------------
LZ 我做了个测试,没有发现你所说的问题。
新建一个winform程序,一个button 名称为:button1,一个textbox名称为:textbox1,其他没有任何修改,form1的代码如下。没有出现你说的问题:
public partial class Form1 : Form
    {
        private Object thisLock = new Object();
        List<string> listarray = new List<string>();
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            lock(thisLock)
            {
                if (!listarray.Contains(textBox1.Text))
                {
                    listarray.Add(textBox1.Text);
                }
                else
                {
                    new ToolTip().Show("did add to array", textBox1,500);
                }
            }
  &nb