bunu yapmak çalışırsanız i cboş(c == null)
sonra WriteLine()
çıktılayacaktır null adlı eşitse söylüyorumNeden tipleri açısından eşleşmelidir: üçlü koşullu operatörü
// As an example. char? c value is actually given by the user.
char? c = null;
WriteLine((c == null) ? "null" : c);
konsola. Else, c değerini vermelidir.
Ancak ben bu derleyici hatası alıyorum:
'string' ve char arasında hiçbir örtük dönüştürme olduğundan koşullu ifadenin türü tespit edilemeyen ?.
char? c = null;
WriteLine((c == null) ? "null" : "{0}",c);
Ya burada benzer derleyici hataları okumak, C 6. ve kullanma dize İnterpolasyon
char? c = null;
WriteLine((c == null) ? "null" : $"{c}");
ile giriş stackoverflow örn:
Benim geçici çözüm bunu idi
veya nedeni türleri eşleşmelidir olduğunu söyler. Sorum şu, neden türlerin eşleşmesi gerekiyor? Ayrıca hata dize ve char arasında hiçbir dolaylı dönüşümü olmadığını söylüyor, bu dize char için açık bir dönüşüm olduğu anlamına mı geliyor? (ki bu açıkça mantıkla burada durum böyle olamaz) ya da char'dan geldiği anlamına mı geliyor? dize mi
Teşekkürler ama biraz daha açıklayabilir misiniz? Çünkü derleyici (bana öyle geliyor) bir dizi ve bir karakter hakkında konuştuğumu biliyor mu? – Johnson
@GeorgeOscStephan, derleyicinin seçmesini beklediğiniz "WriteLine" ın hangi aşırı yüküne karıştığımı karıştırdım. –
@KirkWoll Hangi aşırı yüklenme hakkında ne demek istiyorsun? Derleyicinin null olması durumunda ilk ifadeyi seçmesini ve ikinci ifadeyi seçip çıktı almasını istiyorum. – Johnson