2011-10-03 73 views
0

我宣布我的int[]如下无法隐式转换类型“诠释”到“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

可能重复:[转换的int int数组(http://stackoverflow.com/questions/4216493/convert-int-to-int) –

+2

把一个'的DataRow行= m_oDataSet1.Tables [ 0] .Rows [iTaskid];'在循环代码的开头,引用它而不是写行访问代码,每一行都让医生远离。 –

回答

4

并没有SUPR我收到一个错误在这里。看看

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:我很难告诉你什么excactly做,因为你不显示什么iRoleID目的是

+0

获得'索引超出了数组的范围.'如果我使用这个 – Dotnet

+0

,你确定你确实使用了新的'int [m_oDataSet1 ...]'东西? – Carsten

+0

我改变了代码,只是为了说清楚 – Carsten

1

偏离方向!

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

iroleIDint阵列; Convert.ToInt32()返回一个int。
这样:
- 必须声明一个变量int恩店Convert.ToInt32()价值

- 只是添加Convert.ToInt32()结果iroleIDiroleID.Add(Convert.ToInt32(...))

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); 
    } 
} 
0

为int数组分配一个值使用索引,你不能直接分配到一个整数数组的整数。

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

这会将角色ID列值转换为整数。您正在使用此整数并尝试将其分配给整数数组,这当然是不可能的。你的想法到底是什么?如果是使用所有ID填充单个数组,您可以像执行一样操作,但将其分配给普通整数,然后将该整数添加到列表或其他内容中。

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

0

一个问题已经回答了,你必须将其添加到一个数组给位置你想

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

的另一个问题是,你创建一个数组。你必须给出数组的长度。

int[] iroleID = new int[m_oDataSet1.Tables[0].Rows.Count];

相关问题