4 ms·
I much prefer C# 11's raw string literals. It takes the indentation of the first line and assumes the subsequent ones have the same indentation. string json
by kcartlidge 1y ago
I much prefer C# 11's raw string literals. It takes the indentation of the first line and assumes the subsequent ones have the same indentation.
string json = $"""
<h1>{title}</h1>
<article>
Welcome to {sitename}.
</article>
""";
And it even allows for using embedded curly braces as real characters:
string json = $$"""
<h1>{{title}}</h1>
<article>
Welcome to {{sitename}}, which uses the <code>{sitename}</code> syntax.
</article>
""";
The $ (meaning to interpolate curly braces) appears twice, which switches interpolation to two curly braces, leaving the single ones untouched.
- Metasyntactic 1y agoJust a minor correction (as I'm the author of c#'s raw string literal feature). The indentation of the final ` """` line is what is removed from all other lines. Not the indentation of the first line. This allows the first line to be indented as well. Cheers, and I'm glad you like it. I thought we did a really good job with that feature :-)
- gf000 1y agoReally not trying to go into any of the "holy wars" here, but could you please compare C#'s feature to Java's multi-line strings? I'm only familiar with the latter, and I would like to know if they are similar in concept or not.
- winwang 1y agoThat's a fantastic design idea, and it seems to require all the other lines to have the same indentation "prefix". Haven't used much C#, but I love Scala's `.stripPrefix` and `StringContext`.
- panzerboiler 1y agoDid you draw inspiration from Swift's multiline string literal, or was it the other way around? The syntax looks very similar, if not identical.
- kcartlidge 1y agoThanks for the correction. I never read the spec, just started using it. And as I tend to balance my first and last line indentation I never realised.