我正在编写一个VSTO,C#的新手,并且在声明和评估返回值时遇到问题。此函数返回Excel.Range或bool。如果它是bool和doSomething(),如果它是Excel.Range,我想什么都不做。
[SomeType] range = Globals.ThisAddIn.Application.InputBox(Prompt: Prompt,Title: Title, Type: 8);
if ([SomeConditionStatement]) {
doSomething(); }
答案 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;