【发布时间】:2012-04-06 07:36:50
【问题描述】:
我正在尝试创建三元表达式,但出现以下错误
“无法确定条件表达式的类型,因为 LiveSubscription 和 DisconnectedSubscription 之间没有隐式转换”
相同的逻辑在 if 语句中起作用,但我想了解为什么它在三元表达式中不起作用 -
这是我想要做的事情的要点:
public interface IClientSubscription
{
bool TryDisconnect();
}
public class LiveSubscription : IClientSubscription
{
public bool TryDisconnect()
{
return true;
}
}
public class DisconnectedSubscription : IClientSubscription
{
public bool TryDisconnect()
{
return true;
}
}
public class ConnectionManager
{
public readonly IClientSubscription Subscription;
public ConnectionManager(bool IsLive)
{
// This throws the exception
Subscription = (IsLive)
? new LiveSubscription()
: new DisconnectedSubscription();
// This works
if (IsLive)
{
Subscription = new LiveSubscription();
}
else
{
Subscription = new DisconnectedSubscription();
}
}
}
我总是可以将其切换为 if/else,但我想先了解发生了什么问题!
【问题讨论】:
标签: c#-4.0 if-statement ternary-operator