2014-11-18 12 views
14

Ho appena controllato la nuova funzione di interpolazione della stringa in C# 6.0 (fare riferimento allo Language Features page at Roslyn per ulteriori dettagli). Con la sintassi corrente (che dovrebbe cambiare), si può fare qualcosa di simile (esempio tratto da un post sul blog che sto scrivendo in questo momento):Formattazione di trattini nell'interpolazione di stringa

var dob2 = "Customer \{customer.IdNo} was born on \{customer.DateOfBirth:yyyyMdd}"; 

Tuttavia, non riesco a includere trattini nella parte formattazione, come ad esempio:

var dob2 = "Customer \{customer.IdNo} was born on \{customer.DateOfBirth:yyyy-M-dd}"; 

Se lo faccio, ottengo l'errore:

Error CS1056 Unexpected character '-' StringInterpolation Program.cs 21

c'è un modo posso ottenere trattini a lavorare nella parte formattazione? So che posso semplicemente usare string.Format(), ma voglio vedere se può essere fatto con l'interpolazione delle stringhe, proprio come un esercizio.

Modifica: poiché sembra che nessuno sappia di cosa sto parlando, vedere my blog post sull'argomento per vedere come dovrebbe funzionare.

+6

In che modo questa domanda non è chiara? Dice esattamente ciò che è necessario per riprodurre l'errore e qual è il comportamento previsto. – svick

+1

Il problema probabilmente non ha assolutamente nulla a che fare con l'interpolazione delle stringhe, e tutto ciò che ha a che fare con la chiamata 'customer.DateOfBirth.ToString (" yyyy-M-dd ");'. Controlla se puoi chiamare il metodo 'ToString' con la stringa di formato, al di fuori di tutte le cose di interpolazione non necessarie. – abelenky

+0

@abelenky È un errore di compilazione, non un'eccezione. – svick

risposta

6

Con la versione di interpolazione stringa che è in VS 2015 Preview, è possibile utilizzare personaggi come trattini nel formato interpolazione racchiudendolo in un altro paio di citazioni:

var dob2 = "Customer \{customer.IdNo} was born on \{customer.DateOfBirth : "yyyy-M-dd"}"; 
27

La versione finale è più facile da usare:

var text = $"The time is {DateTime.Now:yyyy-MM-dd HH:mm:ss}"; 
Problemi correlati