を私はこれをしようとした場合:私はCがヌル(c == null)
その後、WriteLine()
出力すべきヌルに等しい場合と言っていますはなぜ種類がで一致している必要があります:三項条件演算子
// As an example. char? c value is actually given by the user.
char? c = null;
WriteLine((c == null) ? "null" : c);
コンソールに接続します。それ以外の場合は、cの値を出力する必要があります。
は、しかし、私はこのコンパイラエラーを取得:
「文字列」と文字の間には暗黙的な変換が存在しないため、条件式のタイプを決定することはできません?。
char? c = null;
WriteLine((c == null) ? "null" : "{0}",c);
または、ここに似たコンパイルエラーにより読み込みC#6と使用文字列の補間
char? c = null;
WriteLine((c == null) ? "null" : $"{c}");
とでstackoverflowの例:
私の問題を回避するには、これを実行することでした
または
理由は、型が一致しなければならないであることを通知します。私の質問は、型が一致する必要がある理由です。また、エラーは文字列とcharの間に暗黙の変換がないと言うので、文字列のcharへの明示的な変換があることを意味しますか? (これは明らかにロジックではここではできません)、またはcharからのものであることを意味しますか?文字列に?
ありがとう、もう少し説明できますか?私は文字列と文字について話していることをコンパイラが知っているようです。 – Johnson
@ GeoOscStephan、コンパイラが選択する 'WriteLine'のオーバーロードが混乱しています。 –
@KirkWollどのような過負荷ですか?コンパイラが最初の式を選択し、それがヌルであればそれを出力し、それ以外の場合は2番目の式を選択して出力する必要があります。 – Johnson