我已宣布我的int[]
如下
int[] iroleID = new int[] { };
我从数据库获取值并分配给iroleid
的代码如下
if (oAuthenticate.getTaskID(out m_oDataSet1, "uspgetTaskID"))
{
for (int iTaskid = 0; iTaskid < m_oDataSet1.Tables[0].Rows.Count; iTaskid++)
{
iroleID = Convert.ToInt32(m_oDataSet1.Tables[0].Rows[iTaskid]["RoleID"].ToString());
strTaskID = m_oDataSet1.Tables[0].Rows[iTaskid]["TaskID"].ToString();
arrTaskID.Add(strTaskID);
}
}
但我收到的错误是Cannot implicitly convert type 'int' to 'int[]'
,任何人都可以帮助我
答案 0 :(得分:5)
并不令人惊讶。看看
iroleID = Convert.ToInt32(...);
Convert.ToIn32
会产生int
,就像编译器声称的那样。
要么像
if (oAuthenticate.getTaskID(out m_oDataSet1, "uspgetTaskID"))
{
var iroleID = new int[m_oDataSet1.Tables[0].Rows.Count];
for (int iTaskid = 0; iTaskid < m_oDataSet1.Tables[0].Rows.Count; iTaskid++)
{
iroleID[iTaskid] = Convert.ToInt32(m_oDataSet1.Tables[0].Rows[iTaskid]["RoleID"].ToString());
/* ... */
}
}
或重新考虑您的算法。
PS:我很难说你做了什么,因为你没有表明iRoleID
的目的是什么
答案 1 :(得分:1)
当然!
iroleID = Convert.ToInt32(m_oDataSet1.Tables[0].Rows[iTaskid]["RoleID"].ToString());
iroleID
是一个int
数组; Convert.ToInt32()
返回一个int
所以:
- 您必须声明int
变量tu store Convert.ToInt32()
值
或
- 只需将Convert.ToInt32()
结果添加到iroleID
(iroleID.Add(Convert.ToInt32(...))
)
答案 2 :(得分:0)
当然,您不能只将int
值分配给int[]
变量。您可能需要向集合中添加项目。将您的int[] iroleID = new int[] { };
更改为List<int> iroleID = new List<int>();
,然后将代码更改为:
if (oAuthenticate.getTaskID(out m_oDataSet1, "uspgetTaskID"))
{
for (int iTaskid = 0; iTaskid < m_oDataSet1.Tables[0].Rows.Count; iTaskid++)
{
iroleID.Add(Convert.ToInt32(m_oDataSet1.Tables[0].Rows[iTaskid]["RoleID"].ToString()));
strTaskID = m_oDataSet1.Tables[0].Rows[iTaskid]["TaskID"].ToString();
arrTaskID.Add(strTaskID);
}
}
答案 3 :(得分:0)
使用int数组的索引来赋值,不能直接将整数分配给整数数组。
iroleID[0] = Convert.ToInt32(m_oDataSet1.Tables[0].Rows[iTaskid]["RoleID"].ToString());
答案 4 :(得分:0)
iroleID = Convert.ToInt32(m_oDataSet1.Tables[0].Rows[iTaskid]["RoleID"].ToString());
这会将RoleID列值转换为整数。您正在获取此整数并尝试将其分配给整数数组,这当然是不可能的。你的想法究竟是什么?如果要使用所有ID填充单个数组,则可以执行相同操作,但将其分配给普通整数,然后将该整数添加到列表或其他内容。
您也可以使用普通的ADO.NET从该列中检索所有值并将其强制转换为List。那会更好。
答案 5 :(得分:0)
已经回答了一个问题,您必须将其添加到给出您想要的位置的数组
iroleID[iTaskid] = Convert.ToInt32(m_oDataSet1.Tables[0].Rows[iTaskid]["RoleID"].ToString());
另一个问题是,您创建了一个数组。你必须给出数组的长度。
int[] iroleID = new int[m_oDataSet1.Tables[0].Rows.Count];