类:
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();
为什么?
答案 0 :(得分:3)
在三元表达式a ? b : c
中,表达式b
和c
必须可转换为相同类型,且必须是b
类型之一或c
的类型。
SmsVodafone
无法转换为SmsClickatell
,SmsClickatell
无法转换为SmsVodafone
。这就是你收到错误的原因。