Я пытаюсь создать троичное выражение и получаю следующую ошибку
"Тип условного выражения не может быть определен, потому что нет неявного преобразования между 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, но я хотел сначала понять, что происходит не так!