Всем известно, что синтаксическим сахаром называют различные "фишечки" языка, которые помогают более кратко записывать фрагменты кода.
Кстати, кроме сахара есть еще и неожиданные приемы использования свойств самого языка. Подумайте, например, что делает следующий фрагмент кода на c++:
a^=b, b^=a, a^=b;
Но сейчас я хочу написать не про непривычное применение, а про встроенные в язык конструкции, которые мне показались полезными. Да, и еще, язык будет с#, а не с++.
Рассмотрим мы вот такой список:
- ?:
- ??
- <value type>?
- as
- using <name> = <other name>
- using () {}
- params
- #region #endregion
?:
Это условный оператор. Использование простое:
int i = a>b ?a : b;
аналог этой записи:
int i;
if (a>b) i=a; else i=b;
??
Еще один условный оператор, только на этот раз проверяется значение на null.
Позволяет подменить значение null другим значением:
string a = null;
string b = "'a' value: " a ?? "null";
<value type>?
Позволяет обьявлять "как бы" value типы, но с поддержкой null значения:
int? a;
a = 100;
a = null;
as
Приведение типа, которое не вызывает исключений, а возвращает null:
int a = 100;
string b = a asstring; // b == null
using<name> = <other name>
Назначение синонимов для namespace и типов
using Draw = System.Drawing;
using Col = System.Drawing.Color;
using() {}
Автоматический вызов Dispose:
using (Brush br1= new SolidBrush(Color.Red), br2 = new SolidBrush(Color.Green))
{
//...
}
params
Переменное количество аргументов в функции:
int Sum (params int[] list)
{
int sum = 0;
for(int i = 0; i < list.Length; i++)
sum += list[i];
return sum;
}
Sum(1,2,3);
Sum(1,5,4,3,6,4,8,3,0,6) ;
#region #endregion
Никакого сокращения кода не дает. Но зато все равно используется,
потому что позволяет удобно сгруппировать код (повышает удобство
чтения кода, а это, согласитесь, тоже важно):
#region [ архисложные функции ]
//...
#endregion
p.s. Про LINQ и лямбда оператор раскажу отдельным постом, так как тема эта обширная.
p.s.s. А строка "a^=b, b^=a, a^=b;" на языке с++ просто меняет местами значения двух переменных без использования третьей.