Do the null-conditional operator and interpolated strings syntax resolve to just syntactic sugar?
The null-conditional operator (?.
), which allows code clean-up through reducing "excessive" null
checking, and interpolated strings (("\{X}, \{Y}")
), which brings the arguments and format into one, are new features in C# 6.
Do these get compiled to their undesirable counterparts (i.e. the ugly code we sought to avoid)?
I apologize for the naïve question, I don't have the best understanding of languages in general, but I'm curious if it would be possible to run these features on, say, C# 5.
I know this is the case with Java in some instances, is it true as well with these examples?
There isn't a general rule, it differs. Some features are simply syntactic sugar, some add capabilities that weren't possible before, and some are a combination of both.
String interpolation - This:
string result = $"{bar}";
Instead of:
string result = string.Format("{0}", bar);
Null-propagating operator (?.
) - This:
var result = Foo()?.Length
Instead of:
var temp = Foo();
var result = (temp != null) ? temp.Length : null;
String interpolation - Also adds support for IFormattable
using FormattedString
so this is possible:
IFormattable result = $"{bar}"
Await in catch/finally - It's now possible to use await
in catch
and finally
blocks:
try
{
}
catch
{
await Task.Delay(1000);
}
There are of course more features in both categories, like exception filters and expression-bodied members.