Sono confuso sul perché questo codice non verrà compilato:
var result = $"{fieldName}{isDescending ? " desc" : string.Empty}";
Se lo divido, funziona bene:
var desc = isDescending ? " desc" : string.Empty;
var result = $"{fieldName}{desc}";
Sono confuso sul perché questo codice non verrà compilato:
var result = $"{fieldName}{isDescending ? " desc" : string.Empty}";
Se lo divido, funziona bene:
var desc = isDescending ? " desc" : string.Empty;
var result = $"{fieldName}{desc}";
Risposte:
Secondo la documentazione :
La struttura di una stringa interpolata è la seguente:
{ <interpolationExpression>[,<alignment>][:<formatString>] }
Il problema è che i due punti vengono utilizzati per indicare la formattazione, come:
Console.WriteLine($"The current hour is {hours:hh}")
La soluzione è racchiudere il condizionale tra parentesi:
var result = $"Descending {(isDescending ? "yes" : "no")}";
Console.WriteLine($"Cargo Weight: {(ship.WeightAvailable ? $"{ship.Weight:0.00}" : "n/a")}");