使用条件运算符强制转换为不同类型

时间:2013-10-06 17:20:42

标签: c# operators conditional

我正在尝试检查我的对象信息是word.Selection还是word.Document,然后在我的程序中使用它。

这是我遇到麻烦的地方。

 object info;
 var doc = info is word.Document ? info as word.Document : info as word.Selection;
 //do something with doc.Words;

它返回此错误:

  

因为有条件表达式的类型无法确定   之间没有隐式转换   'Microsoft.Office.Interop.Word.Document'和   'Microsoft.Office.Interop.Word.Selection'

我似乎无法解决此错误

2 个答案:

答案 0 :(得分:3)

使用?:运算符时,两个结果必须属于同一类型。

使用标准情况:

if(info is word.Document)
{
    //your code
}
else
{
}

答案 1 :(得分:2)

来自?: Operator (C# Reference)

  

first_expression和second_expression的类型必须是   相同,或者必须存在从一种类型到另一种类型的隐式转换。

在第一个表达式中返回word.Document,但第二个表达式返回word.Selection。因为它们不一样,但看起来它们之间没有隐含的对话。