C# 无法隐式转换类型';int';至';int[]和#x27;

C# 无法隐式转换类型';int';至';int[]和#x27;,c#,asp.net,C#,Asp.net,我的int[]声明如下 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());

我的
int[]
声明如下

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);
   }
}
int[]iroleID=newint[]{}

我从数据库获取值并分配给
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);
   }
}
if(oAuthenticate.getTaskID(out m_oDataSet1,“usgettaskid”))
{
对于(int-iTaskid=0;iTaskid

但是我遇到了一个错误,正如前面提到的
无法隐式地将类型“int”转换为“int[]”
任何人都可以帮助我这一点也不奇怪。看

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());
        /* ... */
    }
}
if(oAuthenticate.getTaskID(out m_oDataSet1,“usgettaskid”))
{
var iroleID=newint[m_oDataSet1.Tables[0].Rows.Count];
对于(int-iTaskid=0;iTaskid
或者重新考虑你的算法


PS:我很难告诉你具体该怎么做,因为你没有说明iRoleID的目的是什么。

这一点也不奇怪。看

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());
        /* ... */
    }
}
if(oAuthenticate.getTaskID(out m_oDataSet1,“usgettaskid”))
{
var iroleID=newint[m_oDataSet1.Tables[0].Rows.Count];
对于(int-iTaskid=0;iTaskid
或者重新考虑你的算法

PS:我很难告诉你具体该怎么做,因为你没有说明iRoleID的目的是什么。

当然了

 iroleID = Convert.ToInt32(m_oDataSet1.Tables[0].Rows[iTaskid]["RoleID"].ToString());
iroleID
是一个
int
数组
Convert.ToInt32()
返回一个整数。
所以:
-必须声明变量tu store
Convert.ToInt32()
value

-只需将
Convert.ToInt32()
结果添加到
iroleID
iroleID.add(Convert.ToInt32(…)

)即可

 iroleID = Convert.ToInt32(m_oDataSet1.Tables[0].Rows[iTaskid]["RoleID"].ToString());
iroleID
是一个
int
数组
Convert.ToInt32()
返回一个整数。
所以:
-必须声明变量tu store
Convert.ToInt32()
value


-只需将
Convert.ToInt32()
结果添加到
iroleID
iroleID.add(Convert.ToInt32(…)

当然,不能只将
int
值分配给
int[]
变量。您可能需要将项目添加到集合中。更改您的
int[]iroleID=newint[]{}
列表iroleID=新列表()然后将代码更改为:

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);
   }
}
if(oAuthenticate.getTaskID(out m_oDataSet1,“usgettaskid”))
{
对于(int-iTaskid=0;iTaskid
当然,不能只将
int
值赋给
int[]
变量。您可能需要将项目添加到集合中。更改您的
int[]iroleID=newint[]{}
列表iroleID=新列表()然后将代码更改为:

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);
   }
}
if(oAuthenticate.getTaskID(out m_oDataSet1,“usgettaskid”))
{
对于(int-iTaskid=0;iTaskid
使用整型数组的索引来分配值,不能将整数直接分配给整型数组

iroleID[0] = Convert.ToInt32(m_oDataSet1.Tables[0].Rows[iTaskid]["RoleID"].ToString());

使用整型数组的索引来赋值,不能将整型数组直接赋值给整型数组

iroleID[0] = Convert.ToInt32(m_oDataSet1.Tables[0].Rows[iTaskid]["RoleID"].ToString());
这将把RoleID columns值转换为整数。您正在获取这个整数并试图将其分配给一个整数数组,这当然是不可能的。你的想法是什么?如果要用所有ID填充单个数组,您可以执行与之前相同的操作,但将其分配给普通整数,然后将该整数添加到列表或其他内容中

还可以使用普通ADO.NET从该列检索所有值并将其转换为列表。那会更好

这将把RoleID columns值转换为整数。您正在获取这个整数并试图将其分配给一个整数数组,这当然是不可能的。你的想法是什么?如果要用所有ID填充单个数组,您可以执行与之前相同的操作,但将其分配给普通整数,然后将该整数添加到列表或其他内容中


还可以使用普通ADO.NET从该列检索所有值并将其转换为列表。这样会更好。

有一个问题已经解决,您必须将它添加到一个数组中,给出您想要的位置

iroleID[iTaskid] = Convert.ToInt32(m_oDataSet1.Tables[0].Rows[iTaskid]["RoleID"].ToString());
另一个问题是,创建一个数组。必须给出数组的长度


int[]iroleID=newint[m_oDataSet1.Tables[0].Rows.Count]

一个问题已经得到解答,您必须将其添加到给定所需位置的数组中

iroleID[iTaskid] = Convert.ToInt32(m_oDataSet1.Tables[0].Rows[iTaskid]["RoleID"].ToString());
另一个问题是,创建一个数组。必须给出数组的长度


int[]iroleID=newint[m_oDataSet1.Tables[0].Rows.Count]

可能重复:放置一个
DataRow行=m_oDataSet1.表[0].行[iTaskid]在循环代码和引用的开头