C#函数返回不同的类型。如何声明返回值?评估返回值?
我正在编写一个VSTO,是C#的新手,在声明和计算返回值时遇到了问题。此函数返回Excel.Range或bool。如果是bool,我什么都不想做;如果是Excel.Range,我什么都不想做C#函数返回不同的类型。如何声明返回值?评估返回值?,c#,excel,C#,Excel,我正在编写一个VSTO,是C#的新手,在声明和计算返回值时遇到了问题。此函数返回Excel.Range或bool。如果是bool,我什么都不想做;如果是Excel.Range,我什么都不想做 [SomeType] range = Globals.ThisAddIn.Application.InputBox(Prompt: Prompt,Title: Title, Type: 8); if ([SomeConditionStatement]) { doSomething(); } In
[SomeType] range = Globals.ThisAddIn.Application.InputBox(Prompt: Prompt,Title: Title, Type: 8);
if ([SomeConditionStatement]) {
doSomething(); }
InputBox
的返回类型是object
。您可以使用var
,然后将其实际类型与匹配
请注意,根据,当类型参数为8时,InputBox
将只返回范围
:
如果类型为8,InputBox将返回一个范围对象
我发现按预期使用
而不是键入,并检查null
,会更方便一些:
Range range = Application.InputBox(Prompt, Title, Type: 8) as Range;
if (range != null)
{
object[,] values = range.Value2 as object[,];
}
其他例子:
var s = range.Text as string;
var c = range.Cells[1] as Range;
var w = Application.Worksheets["Sheet1"] as Worksheet;
var d = Application.Evaluate("COUNTA(A1:A9)") as double? ?? -1;
关于如何检查对象是否为给定类型,您做了哪些研究,以及将您发现的应用于您的情况时遇到了哪些问题?是,GetType(),typeof,但如果我得到的是另一种类型,而不是检查的if(range是Excel.range)
,则它们都会失败?可能您的输入框
返回对象
?@bravogolfgolf然后显示您正在使用的代码,并具体解释您在使用它们时遇到的问题。我观察到类型8的输入框有两个按钮:确定和取消。如果输入范围,则“确定”返回范围。如果单击确定时没有范围,则显示错误。如果单击“取消”,则返回false。此函数在上记录一次,在中记录第二次。office dev one比我之前链接的office dev one要好得多,它甚至解释说取消总是导致false
,就像您观察到的>更新链接一样
var s = range.Text as string;
var c = range.Cells[1] as Range;
var w = Application.Worksheets["Sheet1"] as Worksheet;
var d = Application.Evaluate("COUNTA(A1:A9)") as double? ?? -1;