What's New in C# 6, C# 7 and Visual Studio 2017 | Elias Spock | Skillshare

Playback Speed

  • 0.5x
  • 1x (Normal)
  • 1.25x
  • 1.5x
  • 2x

What's New in C# 6, C# 7 and Visual Studio 2017

teacher avatar Elias Spock, Chance favors the prepared mind.

Watch this class and thousands more

Get unlimited access to every class
Taught by industry leaders & working professionals
Topics include illustration, design, photography, and more

Watch this class and thousands more

Get unlimited access to every class
Taught by industry leaders & working professionals
Topics include illustration, design, photography, and more

Lessons in This Class

27 Lessons (1h 4m)
    • 1. Course Promo What's New in C# 6, C# 7 and Visual Studio 2017

    • 2. 01 Outline

    • 3. 02 Autoproperties and Immutability

    • 4. 03 Expression Bodied Members

    • 5. 04 New Keyword 'nameof'

    • 6. 05 Import Statics

    • 7. 06 String Interpolation

    • 8. 07 Safe Navigation

    • 9. 08 Collection Initializers

    • 10. 09 Exception Filters

    • 11. 10 Conclusion

    • 12. 01 Outline

    • 13. 02 Out Vars

    • 14. 03 Pattern Matching

    • 15. 04 Tuples Deconstruction

    • 16. 05 Local Functions

    • 17. 06 Returning By Ref

    • 18. 07 Throwing Expressions

    • 19. 08 Improvements to Literals

    • 20. 09 Conslusion

    • 21. 01 Outline

    • 22. 02 Improved Navigation

    • 23. 03 Run To Click

    • 24. 04 IntelliSense

    • 25. 05 Live Analysis

    • 26. 06 Live Unit Testing

    • 27. 07 Conclusion

  • --
  • Beginner level
  • Intermediate level
  • Advanced level
  • All levels
  • Beg/Int level
  • Int/Adv level

Community Generated

The level is determined by a majority opinion of students who have reviewed this class. The teacher's recommendation is shown until at least 5 student responses are collected.





About This Class

C# is one of the most powerful languages in the modern world of programming. It has one of the most powerful type system. There was a battle for sometime between Java and C# and now we can say for sure that C# won that battle from the language features point of view.

C# 6 is already released and fully available with Visual Studio 2015. C# 7 is under development still, but many announced features are already implemented and we can play with them in Visual Studio 2017 which is currently (when I'm writing this) itself under development (release candidate is available).

Teaching Approach

No fluff, no ranting, no beating the air. I esteem your time. The course material is succinct, yet comprehensive. All important concepts are covered. For absolute beginners, I offer my help on Skype absolutely free if requested. Don't forget that this course has English subtitles, so if you don't understand my accent, feel free to turn them on.

Take this course and you will be satisfied.

Keep pace with modern C#

If you go behind the modern C#, then this course is for you. This course will bring a whole picture of what's going on nowadays in C#. Modern C# is a powerful multiparadigmatic language. New versions of C# bring more and more functional features and you'll see it on practical examples.

Content and Overview

The goal of this course is to show all the new features of C# 6, C# 7 and Visual Studio 2017.

This course is built for all kind of C# developers who are interested in learning C# 6, C# 7 and Visual Studio 2017. This course is beneficial for juniors as well as for seniors who want to stay well-informed about new C# features. I’m sure any student will find something interesting and useful in this course.

The main prerequisite is to be familiar with development on the .NET platform in C#. That’s all you need. 

In short, the course covers the following topics.

C# 6:

  • Autoproperties and Immutability
  • Expression-bodied members
  • Import of static members (using static)
  • nameof
  • String interpolation
  • Nullability, null-conditional operators
  • Index initializers
  • Exception Filters

C# 7:

  • Enhanced Tuples
  • Pattern Matching
  • Ref. Returns, Async Returns, Exceptions
  • Deconstruction
  • Local Functions (more functional programming! :) )
  • Out variables literals

Visual Studio 2017:

  • Improved Navigation
  • Run-to-Click (improved debugging)
  • Improved IntelliSense
  • Live Code Analysis
  • Live Unit Testing

Meet Your Teacher

Teacher Profile Image

Elias Spock

Chance favors the prepared mind.


I'm thankful enough for that I love what I do.
I began my career as a postgraduate student participating in Microsoft ImagineCup contest.
I've been working with .NET platform since 2003. I've been professionally architecting and implementing software for nearly 7 years, primarily based on the .NET platform. I'm passionate about building rich and powerful applications using modern technologies. 
I'm a certified specialist in Windows Applications and Service Communication Applications by Microsoft.
I'm one of the coordinators of the MSK.NET User Group in Moscow.

"If it's work, we try to do less. If it's art, we try to do more." - Seth Godin.

What I can say is that software is my art.

See full profile

Class Ratings

Expectations Met?
  • Exceeded!
  • Yes
  • Somewhat
  • Not really
Reviews Archive

In October 2018, we updated our review system to improve the way we collect feedback. Below are the reviews written before that update.

Why Join Skillshare?

Take award-winning Skillshare Original Classes

Each class has short lessons, hands-on projects

Your membership supports Skillshare teachers

Learn From Anywhere

Take classes on the go with the Skillshare app. Stream or download to watch on the plane, the subway, or wherever you learn best.


1. Course Promo What's New in C# 6, C# 7 and Visual Studio 2017: Hi. Welcome to the course. What's new in C. Sharp six c. Sharp seven and Visual Studio 2017. I am the last coffin of a K engineer. Spark from junior sparked dot com, and I'll be leading you through the course. I began my career. A supposed greater student participating in Microsoft in Agent Camp Contest. I've been working with dot net platform since 2003. I've bean, professional architect and implementing software for nearly seven years, primarily based on that letter, I am passionate about building reach and powerful obligations using modern technologies. I'm certified specialist those applications and service communication applications by Microsoft. I'm happy to be a C sharp developed. Why? Because the shop is the most beautiful and powerful object oriented language, See, shop is still growing. It becomes more and more powerful. See Shop six and seven concentrate on a great number of features, which improve readability. Visual Studio 2017 brings a great number of fissures as well. In order to program in C Sharp seven without problems, you'd better to install Visual Studio 2017. In this course, you learn the new features off C sharp six, including auto properties expression bodied members. The new key work name. Off import stay ticks string interpolation, safe navigation operator collection. Initialize er's and Exception filters New features in C sharp seven, including out variables. Battering matching. Two people stand to construction, local functions returning by reference throwing expressions and the improvements to liberals. New features in Visual Studio 2017 including improved navigation around to clean, improved in Telus, UN's life code analysis and live unit testing. The scores is built for all kind off C sharp developers who are interested in learning you see shop programming language. This course is beneficial for juniors as well as for seniors who want to stay well informed about modern see shop. I'm sure any student will find something interesting and useful in this course. Main prerequisite is to be familiar with development on the Darknet part. For insertion That's cold. You need feel free to look at the core of descriptions. I'm looking forward to seeing you inside the course in the role and stop learning what's new in C Shop. Six. C. Shop seven and Visual Studio 2017 2. 01 Outline: Hi. This is Engineer Spark from injuries bob dot com, and we continue our tour. Visual Studio 2017 brings a great number of new features. Let Millie's them briefly and roughly better debugging experience with Around to click feature More Life Gold analysis features more effect rings out of the box. Better navigation experience, smarter intelligence, live unit testing, improved desktop development. Removing and sorting of Zamel name spaces. Better installation off visuals to do itself and improved performance of visual studio. And believe me, this least is far from the full list of new features. Were not going to learn all the new features off Visual Studio 2017. It's just not feasible. So we're going to learn how to use new enhanced navigation. How to harness the Power of life code analysis. How to Use Me, you debugging feature what's new in improved intelligence and how to enable and use live unit testing 3. 02 Autoproperties and Immutability: all the properties came into play in C Sharp. Three. The intention off introducing other properties was to allow cold simplifications to make gold more readable. At the same time, the way off the properties were implemented was confusing. Often we couldn't use them because of breaking in mutability. I don't want to rant to march, so let's go the little bit and look at the problem on practice. For example, let's say I want to create a character class. Let's say that the character has some kind of farmer and by the way, that armor should be immutable. One said it should not be changed. Firstly, I'll implemented s and auto property. Well, this looks concise and understandable. We declared the property with getter and private center, so no one can change the value off this property from the outside world. But there's a problem. Enemies do not walk on the outside of the class. We, as developers off this particular class, are also animals. We can easily roll out a method which mutates. The value of the property in mutability is the concept which became very popular nowadays because of the rise of a functional programming paradigm which makes gold more robust. At least this course is not about different programming concepts, So let's continue to discuss the shop. Six. So, in order to make this cold immutable, we could declare a read only field before C sharp six. Let's do it. Yes, you can see it won't compile, so I'll commend it out Now everything works fine. But the thing is that we lost a succeeds in tax, Imagine 10 properties and you'll see that cold looks ugly before C sharp six. This was the only one possible way to go to preserve mutability with properties. See, Shop six introduces immutable getter only properties so we can now affect her this gold like this. Wow, cool looks much better. And by the way, we need to remove our bad spell method. It also won't compile. This kind of property can be assigned Onley in a constructor or right here with the assignment operator. The straightforward initialization off properties was not available before see shop six. So this is also a new feature and it is available with all sorts of properties. By the way, yes. You see, you can initialize this property from both places simultaneously, but The thing is that the constructor will have a priority. Let's great a character and pre now the armor value. I'll around application. Yes, you can see the armor equals 90. So the constructor has a priority. Okay, let's have a look at another need to feature called expression bodied members. 4. 03 Expression Bodied Members: to look at expression bodied members. I'll expand the character class a little bit. I'll add the wear, health and defence properties. I also want to add a method named damage for damaging a character. Look at these 21 liners. The defense property is a calculated property. The method is the one liner also, which modifies the internal state of the object in si shop seeks. We now can, in effect her such one liners into so called expression bodied members. Let's do this with the damage method. Yes, you can see for expression, but it members see shop uses the Lambda syntax. This way of coding feels more functional. We now see the code as an expression, not as a statement. It was a more procedural before. It takes some time to realize that scenes from the first sight everything seems the same, except the fact that the code is now shorter. By the way, this is also a good thing. The same riff Factoring we can perform without property. Please notice that you can use expression bodied members only with one liners as two properties, you can turn them into expression, body it members only if they're declared with a getter without center. One thing I want to notice is that you can transform one line constructors into expression bodied members so constructors are not eligible for such a factory. Ing's Take a look at one cave. It related to expression, but it properties. Let's say I want to define a read only property with a fixed value. I'll just, um, the armor property a little bit. Here it is. It is still immutable. But be careful with that, since a single incorrect step can destroy the whole design. Oops, everything compiles just fine, but now we work with publicly available mutable field. What a disaster. I'm not saying that you should avoid using such expression, but it properties. Just be careful or use special tools like re sharper, which will remind you that you did something harmful. By the way. I also want to notice that when you use expression, but it members, they don't become lambda us. They will be compiled its irregular methods or properties, so you will not get any performance penalties. There is the last thing I want to say about expression, body at members. Let's add a command to our damage method. In such cases, expression body of members look weird. They look good in super simple cases. In such a case, with comments or too many nested calls in the expression, just turn it to regular method, it will look much more readable. Okay, we started things out with auto properties and expression. Body of members. Let's have a look at the next exciting feature called Name off. 5. 04 New Keyword 'nameof': to learn what name off is Let's start with an example right away. Let's look at the most often faced case when we need the name off operator in WBF in order to notify third bodies about changes we need to implement their I notify property changed interface. Let's implemented on our character class here I implemented the I and be seen to face in a straightforward manner. Now I also want to roll out a new name Property. If the name was changed, I want to throw a corresponding notification to do it straight forward. We can pass a string literal like this. Such strings in the program are always bad. There is an implicit dependency between the string literal and the name of the property. What will happen if we rename the property? Yes, we will pass in the cortex string after that, if we forget to rename it as well. There were several ways to avoid passing incorrect strings. Even the Foresee Shop. Six. Actually, I don't want to dig these approaches. Just Google for color, member name, attribute and implementation off NPC with linke expressions, you'll find what I'm talking about. C. Sharp six provides a special keyword name off. Let's use it. Wow. Pretty simple and beautiful. And by the way, with this operator, we avoid any performance penalties related to approaches with color member name and link you expressions. So this is cool. Remember that name off just takes the last part off a fully qualified name. So we doesn't include the name space in the name of a class. Okay, let's look at a pretty simple and need feature off importing static classes in the next lecture. 6. 05 Import Statics: and this is the same case when looking at a feature on practice is much more understandable than ranting about it. So let's get our hands a little bit dirty. Firstly, I'll implement and enumeration. I also want my character to be of some type, so I let the property and initialize it through a constructor. And let's say I want my arm to be dependent on the type so I'll implemented as this off course. This example is quite synthetic, but nevertheless it is enough to demonstrate the new C shop feature. Here's what we can do now if we see too much off stated classes arenas in our code, we can do the following year factoring wow, math and type our guns. Look here and here. You can see to using stating statements. So see Shop six allows you to import stated classes, and enumeration is very simple. If you're confused, what the hell is used here or there where it came from? You always can hover your mouse pointer over the required member and see the source of it. This feature was introduced in Java long, you know. So now we have it in see shop. Very nice. Let's go further and look at the feature off string interpolation 7. 06 String Interpolation: Let's say I want to display some kind off information about the character so I'll go and override the to string method. I want to display their name and health before see Shop six. We could do the following to create a corresponding string with C Shop seeks so we can make it shorter with the feature called String Interpolation. Look at this. This is much more concise for interpellation. We use the dollar sign. However, there is an interesting thing. We can also re arrived. The interpolated string like this. So what the hell is format? Herbal string. Formidable string is a new type in dot net 4.6 and the compiler will only use it if you try to use it. In other words, the type, often interpolated string literal is normally a string built with string dot format but can be format herbal string if you ask for it. A formidable string consists off the format string, which would be passed to string dot format and the arguments that would be passed in order to form it'd. Crucially, this information is captured before formatting. This allows you to adjust the formatting appropriately, most commonly to perform it in the in variant culture, often with the in variant, static method like this. Okay, I'll just return, then you weigh. Okay. Now you know how to use this string interpolation feature. The next feature we're going to look at is one of the most pleasant features in C Shop six , the so called safe navigation operator. 8. 07 Safe Navigation: In order to demonstrate a more convincing example, let's add a weapon class, which has a name, property. Let's also say that a character can be armed by a weapon. Now let's implement a state IQ method outside off the character class, which checks if a character is armed by knife before C sharp six, we could write the following check. It looks very excessive and ugly in C. Sharp seeks. We can simplify this drastically. Here you can see the new operator question mark, which is also called Safe Navigation Operator. The result looks much more concise and more readable. And one more thing. This is not only more readable, this is also more robust. Why, The thing is that in the previous example of the weapon, property could be naldo right after these check and before these, so you could get another reference exception in some cases, especially if we're talking about multi threading scenarios with safe navigation operators , this is impossible. Enjoy this new feature. It's very powerful 9. 08 Collection Initializers: I combined two new features related to initialization off collections in tow on lecture. The first funky feature we're going to look at is collection initialization by extension methods. And let's just start with an example. Let's say I want to create a list of characters to do that. I just ride the following regular lands of code here. I just It's always used irregular collection, initializing syntax. In some cases, it might be useful to simplify things a little bit. Just look at this ill defined the class off extensions here. I just had a method named Add What allows See Shop to detect that the extendable class, which is my least in this case, can add types. So now I can create at least off characters just by adding types there. 1 may wonder if these feature is important and the short answer is no. It might happen that you'll never use this fissure in your entire life, actually. But if this can simplify the process of creating collections of objects, why not? Okay, let's get to the next feature. One of the most controversial features, in my opinion, is the feature called Index Initialize Er's. I think that such small features make the language harder to learn and understand. It forces us to keep the small yet important difference in using different scene tax in our hands, and at the same time there is no aerial profit from using such features. This feature allows toe add key value payers through square brackets directly. You'll see this right now. Let's consider a simple, practical example. Say I want to define a dictionary of characters. To do this, I'll Cray the following dictionary In the main method. I just want to print out the data about the character, so I just will use the right line method. If I around the example, everything is fine now. I'll duplicate the keys in the dictionary, and if I around the example again, we get an exception because the syntax with curly braces, which we used here right here to initialize the dictionary internally implies calls to the ad method. Off the dictionary class, we can't add twice the same key, so we end up with an exception. Now here is the new feature to initialize the dictionary. We can use the same tax off indexes here. It is what will happen if we're on this example with duplicated keys, an exception has occurred. But at this time we can see the word started. It means that you can initialize a dictionary with duplicated keys. What happened here is that it didn't find the key Bob. So when we duplicate keys with indexer syntax, the first ones will just be replaced. This is a very subtle difference, and you should be careful regarding this new feature. It looks beautiful, but it hides this potential and nasty behavior because it's much better to face the exception as earlier this possible. 10. 09 Exception Filters: the next feature we're going to look at is called exception filters. This feature, in my opinion, can also be considered minor insured. It helps to apply conditions on catching exceptions. Let's look at an example in code to filter out exceptions by any condition you like Now with C Shop six, you can use the one key word. You can either use them with methods which returned Bullen or write down conditions directly inside round braces. This feature ads no advantages over plane if statements inside catch blocks except a little bit more beautiful syntax. 11. 10 Conclusion: Congratulations. You've reached the end of the module in this module. You learned how to use new features. Both See shop six. You learned how enhanced out of properties allow easily support in mutability. Expression Bodied members is also a need feature, which improves readability in certain scenarios. The name off key Word is used to pass string literal and, of course, it is supported in compile time. What makes further renaming safe? You can perform a renaming. Re factoring is without fear to break something. Import off Static members is also a need feature, which improves irritability. And by the way, this feature has been introduced in Java long ago. String interpolation is another feature which improves irritability when building strings. Safe Navigation operator does not make knows safe to pass all over the system. Treated SS syntactic sugar. Don't think that it's a cure from now. References. Disease collection Initialize Ear's is a strange feature, which I actually don't like, But if you see a good opportunity to use it, feel free to do so. Just be careful with keys duplication. The last feature we discussed was filtering exceptions. This is another feature which I will not use very often if I'll use it at all. I prefer to rely on special techniques and frameworks to handle exceptions. So I don't expect to see exceptions filtering everywhere. In my code base s you can see almost all the fissures are syntactic sugar. So stay sharp. Six. Just makes our lives a little bit more enjoyable. 12. 01 Outline: Hi. This is Engineer Spark from injuries bob dot com, and we continue our tour. Visual Studio 2017 brings a great number of new features. Let Millie's them briefly and roughly better debugging experience with Around to click feature More Life Gold analysis features more effect rings out of the box. Better navigation experience, smarter intelligence, live unit testing, improved desktop development. Removing and sorting of Zamel name spaces. Better installation off visuals to do itself and improved performance of visual studio. And believe me, this least is far from the full list of new features. Were not going to learn all the new features off Visual Studio 2017. It's just not feasible. So we're going to learn how to use new enhanced navigation. How to harness the Power of life code analysis. How to Use Me, you debugging feature what's new in improved intelligence and how to enable and use live unit testing 13. 02 Out Vars: see Shop seven introduces and you feature called out Variables. We have out parameters. Seems the first version off. See Shop Out Variables is a syntactic sugar, which makes all the things a little bit simpler. Let's look at an example. Let me introduce a new class point with two coordinates X and y here. I also have a method which returns coordinates via out parameters. How can we use such an A P I? Let's try to use it in the main method with C Shop seven. We can just remove the declaration off variables and right, the returning Type C sharp compiler will emit necessity coat in compile time. This feature is also need when we use dry methods like tripe, ours. This is the most common case off using out parameters, so out variables are very hand in such cases. Here we just parse a string to an integer and print out the value. So now out variables are flute. We don't need to declare anything before calling a method which returns out parameters. But please notice that this feature doesn't make out parameters. A good architect ing choice. It doesn't mean that if you want to return several parameters. You should rely on out parameters. They're still most useful in tried do something scenarios like Try poss. I consider out parameters as a bad practice. In most other cases, you can take my course about designing and implementing types and see shop to learn more on the topic. 14. 03 Pattern Matching: pattern matching is a feature which came from functional paradigm, which is very popular nowadays. Insured, see Shop seven allows these expressions to have a pattern on the right hand side, and case clauses in switch statements can now match in patterns nor just constants. Let's look at an example. It's much more understandable than the ranting about the feature. Let's say I have a method which takes a parameter off type object, and I want to check if this is either a string or an integer. In the end, I want to get an integer. So if it is already an integer, then I want just to print out its value. If this is a string, I want to pass it on, then print out. It's very with pattern matching I can achieve. There's out like this. Let's create another function, which checks the object by a switch case statement before implementing it. I'll just great to super simple classes. Here. You can see how we can use types in switch cases. It's very handy 15. 04 Tuples Deconstruction: we had two polls at our disposal before see Shop seven. They were introduced in dot net four point. Oh, and actually they were not related to see shop as a language itself. Old to pols were implemented as classes. What reduced their applicability in high performance scenarios? You two polls are implemented in a special type named value to pull, which can be found in the new good package called system dot value. To pull value to pull is a structure and see sharp seven implements a special treatment of this type. - Let's code a little bit. For example, I want to return to different era coats from a method. How could we achieve that before? See Shop seven. We could use out parameters which are clunky. We could create a separate class or a structure to hold these error codes. We could use all to pols without comfort, because we end up working with Item one item to Item three properties. Now we can implement such a function like this. At first I create a glass. - I launched a rocket and then check the state off main and subsystems and return them as a value to pull. Let's look at how we can consume such an FBI here. You can see that we can use of our. So it looks like we get an anonymous type. Then we can use well named parameters very handy. If you remove names in the function declaration, then instead of using well named the returned parameters, you use Item one, Item two and so on names which will be automatically a scientist. Return values Al demonstrated quickly off course. This is not very cool, so I'll turn it back. We consumed our to pull by the var keyword. There is a feature called Deconstruction. Let's look at it at Deconstructing Declaration is a syntax for splitting at Heupel or other value into its parts and assigning those parts individually to fresh variables. We have four ways to deconstruct two pills. We can explicitly declare both type and name off variables like this. We can use var instead of explicit type. We even can use of our outside of round brackets and finally weakened deconstruct into already declared variables. The construction is not just for two pills. Any type can be deconstructed as long as it has AH instance or extension the constructor method off the following form the out parameters constant. You've the values that result from the deconstruction. It will be a common pattern to have constructors and d constructors be symmetric in this way just to notice. I want to add that new value to polls are need to use to create dictionaries with multiple keys here. Concede example on the screen value to pols. Implement the equality off structures so they will be treated as equal if their corresponding fields are equal. 16. 05 Local Functions: Yet another one functional programming feature is called Local Functions. Yes, with C Sharp seven. We can create functions within functions. Let's build such a function. Sorry, bought. I'll implement a synthetic example. - Here we have a get full name function within their get full in for function when this feature is handed to use. The thing is that sometimes we need to re factor a function by extracting some business logic inter separate function to improve readability. And the thing is that named function is much better than unnamed piece of code. At the same time, very often we face a situation when the function which was extracted out is used only by single function, which actually was re factored. And in this case, such extracted out functions become orphans. They're just hanging around and become an obstacle to observe the A pile of type. Local functions in such cases are very powerful to make gold much more cohesive. External and internal functions are super cohesive, they can't live without each other, and this is actually great. It enhances a readability very much 17. 06 Returning By Ref: the feature off. Returning by reference is a semantical one. It is not a syntactic sugar. It was introduced in C Sharp seven in order to simplify development of super performance algorithms. Sometimes we need in fast algorithms to return value types by reference. Let's consider a simple example of changing and value in an array. It's gonna be classic. Let's say I want to implement a function which finds a number in array and returns the value. With this new feature, I can implement such a function like this. - Now let's use it from the main method. Look at how we now can get a value. - And with the syntax, we can reassign the return value. Let's run the application and you can see that the second value was changed. 18. 07 Throwing Expressions: I like this small improvement called throwing expressions. Let's consider an example. Let's say I want to implement a method which takes a full name and returns the surname. If there is no us her name, I want to throw an exception with C Sharp seven. I can implement it as follows before see Shop seven. We had to introduce if statements throwing expressions feature makes our cold a little bit cleaner. 19. 08 Improvements to Literals: Let's look at yet another syntactic sugar with C Shop seven. We can make integer constants more readable. For example, I can declare a big number like this. Now we can use underscore characters as D limiters of digits. Another feature is about declaring bit masks, for example, I can declare a bit mask like this. Now we can use the same underscore character to make beat masks more readable, and that's all about improvements to liberals. 20. 09 Conslusion: and here we are. This is a conclusion off the module about See Shop seven features Congratulations in this module. We've seen a great number off new features, including out variables, which makes out parameters not so clunky as they were before. See shop seven Better in matching, which simplifies matching off types value to pills and deconstruction to need features, though I wouldn't expect to use them too often. Local Functions is my favorite feature in C Sharp seven. It makes too dependent functions super cohesive. I just love it and expect to use it very often. Returning by reference is a cool feature that will be often used in algorithms with high performance scenarios. Throwing expressions is a syntactical improvement, which allows in certain scenarios to reduce the amount off code a little bit. Improvements to liberals is the next in tactical sugar, which allows to improve readability a little bit. The most powerful features, in my opinion, our local functions and returning by reference and valuables better. Imagine at this point is a little bit weak, comparing to functional languages like F sharp, so I hope it will be improved later. The most pleasant syntactic sugar is the out variables feature before see shop seven out parameters who were just super ugly 21. 01 Outline: Hi. This is Engineer Spark from injuries bob dot com, and we continue our tour. Visual Studio 2017 brings a great number of new features. Let Millie's them briefly and roughly better debugging experience with Around to click feature More Life Gold analysis features more effect rings out of the box. Better navigation experience, smarter intelligence, live unit testing, improved desktop development. Removing and sorting of Zamel name spaces. Better installation off visuals to do itself and improved performance of visual studio. And believe me, this least is far from the full list of new features. Were not going to learn all the new features off Visual Studio 2017. It's just not feasible. So we're going to learn how to use new enhanced navigation. How to harness the Power of life code analysis. How to Use Me, you debugging feature what's new in improved intelligence and how to enable and use live unit testing 22. 02 Improved Navigation: in Visual Studio 2017 you can find all the navigation options under it. It go to menu item, and here you can see different options available. Goto all go to file, line, symbol and so on. Let's try to use Goto all. I'll use the shortcut control plus T, and here we see a popped up small window with different options. For example, I want to find character. Visual Studio finds all the possible targets I might be interested in. It found a type, its constructor a file and so own on the top. Off the window there are filtering buttons, which are helpful if you get too many results. If I want to search for a file, I can pick the corresponding option. Play around with other options. Everything is very intuitive. Another navigation feature, which I like very much, is find all references. I'll right, click on armor and click on final references. A window popped up with a completely new experience. Here, you can see that the property is used in three places. When you hover over these lines, visual studio shows a small preview window, which shows a chunk of corresponding code Very cool. You can also group this searching results as you like. Here, you can see different options 23. 03 Run To Click: a simple yet very cool Fisher, which will save a great amount of time, is called round to click, and it allows you to debug your code without setting break point each time you need one. Let's try this feature. I'll set a break point here at the beginning off the main method and run the application. De bugger Hate the break point. And now I want to run here. I just move my mouse here and we see a green small button click on it, and the bugger is now here. And we also see how much time it took to go here from the initial point. And we can click on this metric and open the diagnostic tools with all the details. This is a very cool feature. I love it, and I'm sure I'll use it on the everyday basis. 24. 04 IntelliSense: for a very long time, we all have been waiting for the filtering feature in intelligence. Let's look at it here. I want to call some a P I off the character class I type c don't and now you can see that we can fielder a P i members by properties, events, methods and so on. In this case, we're working with a simple class, so it's not a big deal. But many types in the BCL have a great number off a P I members. So this feature is very pleasant, by the way, improved intelligence shows a pair members, which will be used most likely on the first places. 25. 05 Live Analysis: Visual Studio 2017 started its journey to replace such powerful factoring stools like re shopper. Visual Studio 2017 introduces life code analysis, which you can use by pressing all plus enter or control plus dot Let's try it. I'll click on the weapon property, and the visual studio can provide some actions. It shows the bulb on the left. Got, for example, Here I'll Click Control plus dot and the visual studio suggests, to convert it to interpolated string. Just press enter and Visual studio will do all the things automatically. Life code analysis, for example, can discover the possibility to convert string that former inter interpolated string formal use of our instead of explicit types heading braces, removing them and many other analysis are provided as well. Just play around with it. Life code analysis off course will be improving over time. 26. 06 Live Unit Testing: the feature Off Live unit testing is available only in the Enterprise package of Visual Studio. In order to look at this feature, I have attached a unit testing project here. I have a unit test, which checks if the damage method and health properties were correct else have some armor, so the elves health should be equal to 49 after damage equal to 100 to enable life unit testing. I'll go to test live unit testing and start now. You can see green check marks here, which means that these tests is passing. Let's go to the damage method here. You can see that visual studio also marks this method as checked in unit tests. Let's change the implementation, and now you can see that our test is failing. Let's river back our changes and everything is correct. Now visual studio tracks changes and re run unit tests automatically. Live Unit testing is a great feature for those who practised as driven development, or TDD. In short, it allows to make the face off running tests automatic. We don't need to run tests explicitly every time we change anything in the code base 27. 07 Conclusion: Visual Studio 2017 brings a great number of improvements. This course is just an overview, so I'll definitely will create a big course dedicated to Visual Studio 2017 where I'll show all the available features in great details. In these short over of your module, we've seen the improved navigation around two klieg debugging feature Improved intelligence Life cold. And then there's this and live unit testing. This is the end of the course. I hope you enjoyed it. See you later.