C#函数返回不同的类型。我如何申报退货价值?评估返回值?

时间:2017-03-15 21:42:41

标签: c# excel

我正在编写一个VSTO,C#的新手,并且在声明和评估返回值时遇到问题。此函数返回Excel.Range或bool。如果它是bool和doSomething(),如果它是Excel.Range,我想什么都不做。

[SomeType] range = Globals.ThisAddIn.Application.InputBox(Prompt: Prompt,Title: Title, Type: 8);

if ([SomeConditionStatement]) {
    doSomething(); }

2 个答案:

答案 0 :(得分:0)

InputBox的返回类型为object。您可以使用var来容纳该值,然后将其实际类型与is keyword相匹配。

var range = Globals.ThisAddIn.Application.InputBox(Prompt: Prompt, Title: Title, Type: 8);

if (range is Excel.Range)
{
    doSomething(); 
}

请注意,根据documentation,当Type参数为8时,InputBox不会返回除Range之外的任何内容:

  

如果Type为8,则InputBox返回Range对象。

答案 1 :(得分:0)

我发现使用as expectedType并检查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;