Не могу говорить со 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. Если нет, то и метод вызываться не будет. Очень удобно.
Понравилось? Кликни Лайк, чтобы я знал, какой контент более интересен читателям. Заметку пока еще никто не лайкал и ты можешь быть первым
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
wow. опциональный оператор - viglyadet ocheni kruto. Chasto pishu if dlya etoi tseli.
F#, Идеи один в один берутся от туда, и реализуются еще лучше. F# в Microsoft полигон для испытания новых фич под .Net. Swift тут абсолютно ни причем.
Навскидку идеи позаимствованные из F#:
- LINQ (конвеер из F# в C# ) + это чистый функциональный стиль
- lazy
- async
- лямбды
- новое объявление конструктора в c# 6
Все было в f# с первых версий. И это только на поверхности. На самом деле Swift не принес в этот мир ничего нового. Хорошо, что они хоть, наконец-то, додумальсь воспользоваться тем что есть.
Но конечно, фичи эти придуманы еще раньше, просто мы оних не знаем, так как языки в которых они использовались впервые не очень популярны
Михаил,
чтобы в случае отсутствия 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)
Отличное уточнение, спасибо
Хотите найти еще что-то интересное почитать? Можно попробовать отфильтровать заметки на блоге по категориям.