如何使用C#Interop返回整数数组?
问题描述:
我试图返回一个整数数组,并不能得到它的工作...如何使用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;
}
}
答
的问题是,你的方法返回一个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;
}
您的方法的类型是int,但您试图返回一个整数数组。因此,也可以将方法的类型更改为int []。 –
试过了,但除了以前的'ExcelSDRAddIn.UserControlSDR.getIndexes(int)',我得到以下错误:并非所有的代码路径都返回一个值' – Valip
你不觉得这是一个非常明确的错误信息吗? – TaW