В предварительной версии
Visual Studio 2015 можно попробовать новые функции
C# 6.0.
В данной статье я расскажу о наиболее интересных и полезных нововведениях о которых мне удалось узнать.
Значения по умолчания в авто свойствах
Начиная с версии C# 3.0 появилась возможность использовать автоматически реализуемые свойства. Это очень удобная возможность.
Однако, бывает, что порой возникает необходимость записать в свойство значение по умолчанию. Обычно эта реализуется следующим образом – объявляется переменная, с уровнем доступа private, в которую пишется значение по умолчанию, а само свойство работает уже с этой переменной. Код будет выглядеть примерно так:
private String _firstName = "Andrei";
private String _lastName = "Amialchenia";
private String _site = "http://flash2048.com";
public String FirstName {
get { return _firstName; }
set { _firstName = value; }
}
public String LastName
{
get { return _lastName; }
set { _lastName = value; }
}
public String Site
{
get { return _site; }
}
Но начиная с C# 6 появилась возможность задания значения по умолчанию непосредственно самому свойству. Это будет выглядеть следующим образом.
public String FirstName { get; set; } = "Andrei";
public String LastName { get; set; } = "Amialchenia";
public String Site { get; private set; } = "http://flash2048.com";
На мой взгляд, очень удобно.
При дальнейшей работе, с подобными свойствами можно работать как обычно.
var user = new User();
Console.WriteLine("First Name: {0}", user.FirstName);
Console.WriteLine("Last Name: {0}", user.LastName);
Console.WriteLine("Site URL: {0}", user.Site);
Данный код выведет следующий результат.
Значение по умолчанию можно задавать не только для строк или чисел, но и для любого типа.
Интерполяция строк
В предыдущем примере, когда я выводил результаты, я использовал следующий синтаксис:
Console.WriteLine("First Name: {0}", user.FirstName);
Здесь вместо
{0} будет поставлено значение
user.FirstName. Это достаточно удобно, но в
C# 6 появилась возможность использовать еще более удобный синтаксис. Вместо вышенаписанного кода, я могу написать:
Console.WriteLine("First Name: \{user.FirstName}");
Если поставить перед кавыками символ \, то внутреннее выражение будет обработано как обычный код, а результат вставлен в строку. Например можно использовать подобные выражения
Console.WriteLine("Number of characters: \{user.FirstName.Length}");
Console.WriteLine("Last Name: \{user.LastName.ToUpper()}");
Console.WriteLine("Site URL: \{user.Site}");
Результат будет следующим:
Упрощённый синтаксис записи свойств и методовВ свойствах методе get можно описывать без самого get{}, например для получения полного имени, можно воспользоваться следующим свойством:
public String FullName => FirstName + " " + LastName;
Подобный синтаксис также будет действовать и для методов. Фактически в методе это позволяет отказаться от скобок и return. Синтаксис будет следующим:
public String AddMiddleName(String middleName) => FullName + " " + middleName;
Monadic null checking
Например, в наш класс User, мы добавим значение друга
public User Frind { get; set; }
Если для проверки значения друга, раньше, постоянно приходилось проверять на null, то теперь мы можем писать так:
Console.WriteLine(user?.Friend?.FirstName);
Console.WriteLine(user?.Friend?.Friend?.FirstName);
Это конечно не весь список нововведений, но и по ним видно, что C# остаётся одним из самых современных и динамично развивающихся языков.
Всем приятного программирования…