Что нового в C# 6.0

В предварительной версии 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# остаётся одним из самых современных и динамично развивающихся языков.
Всем приятного программирования…

Добавить комментарий