Новые возможности C# 6


5 0

Не могу говорить со 100% уверенностью, но мне кажется, что Microsoft реально пыталась создать в лице .NET слишком максимально похожим на С, чтобы его проще было учить. Но при этом они сделали большую ошибку - создавали новый язык на старых шпалах. Попытка максимально взять из C++ привела к тому, что в язык было введено много устаревших конструкций. 

В C# 6 разработчики явно решили освежить язык и если честно, то многие новинки очень сильно напоминают новый язык Swift от Apple. Возможно не Apple придумала эти вещи, но просто я знаю Swift и сейчас часто использую, поэтому и бросается в глаза схожесть. 

Короче, в Swift можно писать имена переменных прямо в строке "Это значение переменной \(param)". Вот в такие круглые скобки, где перед первой скобкой стоит слэш, можно писать переменные. Это удобнее, чем указывать номера в фигурных скобках, как это делается в C или C#. Как я понял, начиная с C# 6 в фигурных скобках можно будет писать имена переменных. Больше не нужно высчитывать номера и расставлять переменные в нужно порядке, просто пишем их прямо в строке.

Вторая возможность, которая может стать хитом - опциональный оператор (я бы так его назвал). Это не опциональный переменные из Swift, это оператор ?. последняя точка не точка, а часть оператора. Оператор называют Элвисом, потому что знак вопроса как бы хохолок знаменитого рокэндролщика. 

Короче. Смысл в том, что если у вас есть у объекта два свойства - Nickname и LastName. Вы хотите в случае отсутствия Nickname возвращать LastName. С помощью элвис оператора это можно записать так:

return this?.Nickname?.LastName

Ну это не очень уж и полезный пример, более интересным будет использовать:

(ObjectName as Disposable)?.Dispose()

Метод Dispose() будет выполнен, только если ObjectName является Disposable. Если нет, то и метод вызываться не будет. Очень удобно. 


Понравилось? Кликни Лайк, чтобы я знал, какой контент более интересен читателям. Заметку пока еще никто не лайкал и ты можешь быть первым


Комментарии

AntonIva

14 Aпреля 2015

Esli mojno, pojaluista napishite bolishuyu statiyu pro smeni raboti - kak iskali, kak interview prohodil, nad kakimi projectami robotaete, sravnenie s proshloi rabotoi. Sam sobirayusi nachati iskati rabotu, ocheni interesno. Spasibo


AntonIva

14 Aпреля 2015

wow. опциональный оператор - viglyadet ocheni kruto. Chasto pishu if dlya etoi tseli.


Владимир

15 Aпреля 2015

F#, Идеи один в один берутся от туда, и реализуются еще лучше. F# в Microsoft полигон для испытания новых фич под .Net. Swift тут абсолютно ни причем.
Навскидку идеи позаимствованные из F#:
- LINQ (конвеер из F# в C# ) + это чистый функциональный стиль
- lazy
- async
- лямбды
- новое объявление конструктора в c# 6
Все было в f# с первых версий. И это только на поверхности. На самом деле Swift не принес в этот мир ничего нового. Хорошо, что они хоть, наконец-то, додумальсь воспользоваться тем что есть.
Но конечно, фичи эти придуманы еще раньше, просто мы оних не знаем, так как языки в которых они использовались впервые не очень популярны


eqr

16 Aпреля 2015

Михаил,
чтобы в случае отсутствия Nickname возвращать LastName, достаточно сделать var smth = Nickname ?? LastName.

Смысл null-conditional operator в том, что обращение к LastName не бросит NullReference, если NickName нет (см. монада Maybe). Но в вашем примере вернется не "или LastName или NickName", а всегда LastName, просто иногда null.

(https://msdn.microsoft.com/en-us/magazine/dn802602.aspx)


Михаил Фленов

16 Aпреля 2015

Отличное уточнение, спасибо


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

Еще что-нибудь

Хотите найти еще что-то интересное почитать? Можно попробовать отфильтровать заметки на блоге по категориям.

О блоге

Программист, автор нескольких книг серии глазами хакера и просто блогер. Интересуюсь безопасностью, хотя хакером себя не считаю

Обратная связь

Без проблем вступаю в неразборчивые разговоры по e-mail. Стараюсь отвечать на письма всех читателей вне зависимости от страны проживания, вероисповедания, на русском или английском языке.

Пишите мне