2011-10-03 72 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];

相關問題