首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

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

2013-07-04 
关于liststring 的Contains 问题?100分求解!!!!!!!Liststring ListArray new Liststring()string

关于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);
                }
            }
        }
    }


[解决办法]
上面的代码



你完全可以定义一个简单的测试一下,看看是否正常,是不是本部分代码的问题

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


            ListArray.Add("1");
            ListArray.Add("2");
            if (ListArray.Contains(str))
            {
 
            }


[解决办法]
重新修改代码如下,依然可以如此操作。
namespace ListArrayContains
{
    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)
        {
            string addstr = textBox1.Text;
            addtoarray(addstr);
        }

        private void addtoarray(string addstr)
        {
            lock (thisLock)
            {
                if (!listarray.Contains(addstr))
                {
                    listarray.Add(addstr);
                }
                else
                {
                    string show = addstr + " has been add to array";
                    new ToolTip().Show(show, textBox1, 800);
                }
            }
        }
    }
}

[解决办法]
data  和 list 内部的值不一致吧??

[解决办法]
引用:
问题的关键是

fun 函数的中ListArray.Contains不能正常检查到
btn__Click下的可以正常检查到

看图:http://blog.csdn.net/bugttp/article/details/6880338

原来如此
"121211212   浙江/嘉兴"  这后面还有“    浙江/嘉兴”呢  怎么可能相等呢


[解决办法]
你可以用这个
            string[] str = new string[10];
            str[0] = "12121313  浙江/嘉兴";
            bool ss = str[0].Contains("12121313"); //true

热点排行