W C # 6 pojawiła się nowa funkcja: interpolowane ciągi.
Pozwalają one umieszczać wyrażenia bezpośrednio w kodzie, zamiast polegać na indeksach:
string s = string.Format("Adding \"{0}\" and {1} to foobar.", x, this.Y());
Staje się:
string s = $"Adding \"{x}\" and {this.Y()} to foobar.";
Jednak mamy wiele ciągów w wielu wierszach, używając ciągów dosłownych (głównie instrukcji SQL) w następujący sposób:
string s = string.Format(@"Result...
Adding ""{0}"" and {1} to foobar:
{2}", x, this.Y(), x.GetLog());
Przywrócenie ich do zwykłych ciągów wydaje się nieczytelne:
string s = "Result...\r\n" +
$"Adding \"{x}\" and {this.Y()} to foobar:\r\n" +
x.GetLog().ToString();
Jak używać razem ciągów dosłownych i interpolowanych?
Odpowiedzi:
Możesz zastosować oba
$
i@
przedrostki do tego samego ciągu:string s = $@"Result... Adding ""{x}"" and {this.Y()} to foobar: {x.GetLog()}";
Ponieważ zostały wprowadzone w C # 6 , interpolowane ciągi dosłowne musiały zaczynać się od tokenów
$@
, ale zaczynając od C # 8, można użyć$@
lub@$
.źródło
@$"..."
) nie działa, co prowadzi mnie tutaj.$@"..."
w tej kolejności.$@
działa, gdy@$
nie działa, ma sens, kiedy się nad tym zastanowić. Kiedy się z tym pogubiłem, co zdarzało się często, kiedy zacząłem używać tej składni, zawsze mówiłem sobie: „interpoluj ten ciąg dosłowny”, ponieważ coś przeciwnego nie miałoby sensu.const string
, upuśćconst
.