2017-03-09 53 views
0

我試圖返回一個整數數組,並不能得到它的工作...如何使用C#Interop返回整數數組?

下面ID我的代碼,對return array

以下錯誤無法隱式轉換類型「詮釋[]」到‘廉政’

public int getIndexes(int num) 
    { 
     var wb = (Excel.Workbook)Globals.ThisAddIn.Application.ActiveWorkbook; 
     var wsEvars = wb.Sheets["Evars"]; 


     Excel.Worksheet sheet = null; 
     if (num == 0) sheet = wsEvars; 

     if (num != 2) 
     { 
      var rng = (Excel.Range)sheet.Range[sheet.Cells[3, 2], sheet.Cells[3, 27]]; 
      var wsValues = rng.Cells.Value; 
      int scopeIndex = 0; 
      int methodIndex = 0; 
      int delimiterIndex = 0; 
      int formatIndex = 0; 
      int count = 0; 

      foreach (var head in wsValues) 
      { 
       if (head == "*Scope") 
        scopeIndex = count + 1; 
       if (head == "Set Method") 
        methodIndex = count + 1; 
       if (head == "Delimiter") 
        delimiterIndex = count + 1; 
       if (head == "Format") 
        formatIndex = count + 1; 
      } 
      int[] array = new int[]{scopeIndex, methodIndex, delimiterIndex, formatIndex}; 
      return array; 
     } 
    } 
+3

您的方法的類型是int,但您試圖返回一個整數數組。因此,也可以將方法的類型更改爲int []。 –

+0

試過了,但除了以前的'ExcelSDRAddIn.UserControlSDR.getIndexes(int)',我得到以下錯誤:並非所有的代碼路徑都返回一個值' – Valip

+2

你不覺得這是一個非常明確的錯誤信息嗎? – TaW

回答

2

的問題是,你的方法返回一個int,而不是int[]只要你想。另外,你正在做if區塊內的回報,並且不能確保return將會被擊中,因爲只有當條件成立時纔會發生。如果條件錯誤怎麼辦?在這種情況下你沒有返回任何東西。從塊中獲取return

public int[] getIndexes(int num) 
{ 
    int[] array = null; 
    var wb = (Excel.Workbook)Globals.ThisAddIn.Application.ActiveWorkbook; 
    var wsEvars = wb.Sheets["Evars"]; 


    Excel.Worksheet sheet = null; 
    if (num == 0) sheet = wsEvars; 

    if (num != 2) 
    { 
     var rng = (Excel.Range)sheet.Range[sheet.Cells[3, 2], sheet.Cells[3, 27]]; 
     var wsValues = rng.Cells.Value; 
     int scopeIndex = 0; 
     int methodIndex = 0; 
     int delimiterIndex = 0; 
     int formatIndex = 0; 
     int count = 0; 

     foreach (var head in wsValues) 
     { 
      if (head == "*Scope") 
       scopeIndex = count + 1; 
      if (head == "Set Method") 
       methodIndex = count + 1; 
      if (head == "Delimiter") 
       delimiterIndex = count + 1; 
      if (head == "Format") 
       formatIndex = count + 1; 
     } 
     array = new int[]{scopeIndex, methodIndex, delimiterIndex, formatIndex}; 
    } 
    return array; 
} 
+0

當條件爲false時,我將處理該情況以返回其他值。改變代碼後,我得到:'使用未分配的局部變量'數組' ' – Valip

+0

do int [] array = null; – NicoRiff