我正在使用C#,我正在创建一个名为“importControlKeys”的ArrayList,它可以很好地创建。但是,我不能为我的生活提供一种循环遍历arrayList的方法,并选择ArrayList中的值以便在以后的代码中使用。
我知道我遗漏了一些简单的东西,但是从ArrayList中提取值的语法是什么。我希望它在某些情况下像我的代码中的importControlKeys [ii] .value,但这不起作用。
我在这些电路板上搜索过但无法找到确切的解决方案,但我确信它很容易。 msot的解决方案说重写为List但我不得不相信有一种方法可以从数组列表中获取数据,而无需重新编写为List
private void button1_Click(object sender, EventArgs e)
{
ArrayList importKeyList = new ArrayList();
List<DataGridViewRow> rows_with_checked_column = new List<DataGridViewRow>();
foreach (DataGridViewRow row in grd1.Rows)
{
if (Convert.ToBoolean(row.Cells[Del2.Name].Value) == true)
{
rows_with_checked_column.Add(row);
importKeyList.Add(row.Cells[colImportControlKey.Name].Value);
//string importKey = grd1.Rows[grd1.SelectedCells[0].RowIndex].Cells[0].Value.ToString();
//grd1.ClearSelection();
//if (DeleteImport(importKey))
// LoadGrid();
}
}
for (int ii = 0; ii < rows_with_checked_column.Count; ii++)
{
//grd1.ClearSelection();
string importKey = importKeyList[ii].value; //ERRORS OUT
if (DeleteImport(importKey))
LoadGrid();
// Do what you want with the check rows
}
}
答案 0 :(得分:6)
不确定为什么要使用ArrayList但是如果你需要循环它,你可以做这样的事情
如果元素不可转换为该类型,则会出现InvalidCastException。在您的情况下,您不能将boxed int强制转换为字符串,从而导致抛出异常。
foreach (object obj in importKeyList )
{
string s = (string)obj;
// loop body
}
或者你做了一个for循环
for (int intCounter = 0; intCounter < importKeyList.Count; intCounter++)
{
object obj = importKeyList[intCounter];
// Something...
}
答案 1 :(得分:2)
你真的不应该首先使用ArrayList
,如果你有选择,你应该使用List<T>
。自.NET 2.0以来,ArrayList
已被有效弃用。使用List
除了无法更新或未更新的遗留应用程序之外没有任何优势。首选List
的原因是,当您在ArrayList
中存储数据时,它只是存储为object
,因此您可以获得object
。你需要把它投射到真正的东西上才能使用它。
在不知道你在ArrayList
中存储的实际类型的情况下,我无法告诉你它应该是什么类型的List
,或者你需要将结果投射到什么类型。
另请注意,您可以使用foreach
循环而不是for
循环来遍历列表/ arraylist中的所有项目,这通常在语法上更容易。
答案 2 :(得分:1)
嗯,你可以做的是
foreach(object o in importKeyList)
{
string importKey = (string)o;
// ...
}
您可以用您需要的任何类型替换(string)
答案 3 :(得分:1)
foreach (object o in importKeyList)
{
// Something...
}
或
for (int i = 0; i < importKeyList.Count; i++)
{
object o = importKeyList[i];
// Something...
}
答案 4 :(得分:1)
您无法在字符串列表中调用.value
...
所以这个:
string importKey = importKeyList[ii].value;
应该是:
string importKey = importKeyList[ii];
答案 5 :(得分:1)
只需删除.value
:
string importKey = (string)importKeyList[ii];
答案 6 :(得分:0)
for(int Counter = 0; Counter&lt; Key.Count; Counter ++)
{
object obj = Key [Counter];
}