为什么条件语句需要强制转换
本文关键字:转换 条件 语句 为什么 | 更新日期: 2023-09-27 18:29:18
可能重复:
以接口为基类的三元表达式
类别:
interface ISms {
void f_SendSms();
}
class SmsVodafone : ISms {
public void f_SendSms(){
// ...
}
}
class SmsClickatell : ISms {
public void f_SendSms(){
// ...
}
}
这项工作:
ISms sms = null;
if (string.IsNullOrEmpty(_bilgi.M_Originator))
{
sms = new SmsVodafone();
}
else
{
sms = new SmsClickatell();
}
这也起作用:
ISms sms = null;
sms = string.IsNullOrEmpty(_bilgi.M_Originator)
? (ISms) new SmsVodafone()
: new SmsClickatell();
这不起作用:
ISms sms = null;
sms = string.IsNullOrEmpty(_bilgi.M_Originator)
? new SmsVodafone()
: new SmsClickatell();
为什么?
在三元表达式a ? b : c
中,表达式b
和c
必须可转换为同一类型,该类型必须是b
的类型或c
的类型之一。
SmsVodafone
不可转换为SmsClickatell
,SmsClickatell
不可转换成SmsVodafone
。这就是你出错的原因。