使用arraylist和按钮进行可能的意外参考比较

时间:2015-01-12 13:49:47

标签: c#

ArrayList hafiza = new ArrayList();
string sql = "";
sql = "SELECT koltuk_adi FROM Koltuk";
SqlCommand cmd = new SqlCommand(sql, baglanti);
SqlDataReader dr = cmd.ExecuteReader();



 if (dr.Read())
            {
                for (int i = 0; i <= hafiza.Count; i++)
                {
                    hafiza[i]=(dr["koltuk_adi"].ToString());
                }
            }

String btn ="";
            for (int j=0;j<=hafiza.Count ;j++)
            {
                for (int i=1;i<70;i++)
                {
                    btn = "button"+i;
                    if(this.Controls[btn].Text == hafiza[j])
                    {
                        this.Controls[btn].BackColor = Color.DarkRed;
                        this.Controls[btn].Enabled = false;
                    }

Possible unintended reference comparison; to get a value comparison, cast the right hand side to type 'string' array...

我在if(this.Controls[btn].Text == hafiza[j])行收到此错误。

1 个答案:

答案 0 :(得分:2)

您正在将objectstring进行比较。由于它们的类型不同,C#会比较它们的引用,这通常不是你想要的。 (在这种情况下,结果始终为false

使用List<string>代替ArrayList键入hafiza[j]的值。

(请注意,您必须在Add上使用List<T>,而不是当前使用的数组作业)