如何解决此错误“没有特定类型”
本文关键字:类型 错误 何解决 解决 | 更新日期: 2023-09-27 18:16:01
private void button2_Click(object sender, EventArgs e) {
foreach (int i in list) {
Process p =(Process) list[i];
dataGridView1.Rows.Add(p.process, p.arrival_time, p.burst_time);
}
}
private void button1_Click(object sender, EventArgs e) {
Process p = new Process();
p.process =Int32.Parse( textBox1.Text);
p.burst_time =Int32.Parse( textBox2.Text);
p.arrival_time =Int32.Parse(textBox3.Text);
list = new ArrayList();
list.Add(p);
textBox1.Clear();
textBox2.Clear();
textBox3.Clear();
}
public class Process {
public int process;
public int arrival_time;
public int burst_time;
}
foreach (var obj in list)
{
//list is ArrayList from what I saw
Process p = (Process)obj;
dataGridView1.Rows.Add(p.process, p.arrival_time, p.burst_time);
}
I 假设 list是ArrayList
,其中包含Process
,因为您要在button1_Click
中填充它,所以您需要这样写。区分foreach
和for
回路。同样使用List<Process>
在这种情况下,你不需要转换
使用TryParse
代替Parse
。优点:如果解析失败,您不会得到异常。你只需要用一个布尔值来检查:
bool Int32.TryParse(string s, out int result);
将数字的字符串表示形式转换为其等效的32位有符号整数。返回值指示转换是否成功。
例子:
int process = 0;
if (Int32.TryParse( textBox1.Text, out process)) {
p.process = process;
} else {
//do some other stuff
}
此外,列表项到int
的转换不应该工作,因为您的列表具有Process
类型的项(您在循环内部进行转换,所以我认为就是这种情况)。正如@mybirthname已经建议的那样,您还将foreach
与for
循环混合在一起。用这个代替:
var list = new List<Process>();
...
foreach (Process p in list) {
dataGridView1.Rows.Add(p.process, p.arrival_time, p.burst_time);
}