私は三式を作成しようとしていると私は、次のエラーを取得しています三元式
を「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に切り替えることができましたが、まず何が間違っているのかを理解したかったのです!
「3値式が特定の型のもの」とはどういう意味ですか?同等のif/else文に対する三項表現の使用にはどのような影響がありますか?私は、三元表現が単純な構文的砂糖であるという印象を受けていましたが、それはいつかもっとですか? – William
@ウィリアム:完全な答え、特にあなたが引用した文の後の段落を読んでください。私はそれがかなり明確であるという意見です。 –
私は完全な答えを読んだが、私はternariesとifステートメントの使用にどのような影響があるのかよくわからない。すなわち、WHYは特定のタイプの三項式であるか?彼らは何らかのオブジェクトですか? – William