SlideShare a Scribd company logo
1 of 43
.NET Foundation
The future of .NET & C#
Martin Woodward, Bertrand Le Roy
martin@dotnetfoudation.org
@martinwoodward
http://dotnetfoundation.org
http://github.com/dotnet
Martin Woodward
I live here
I work here
The .NET Foundation
.NET API for Hadoop WebClient
.NET Compiler Platform ("Roslyn")
.NET Map Reduce API for Hadoop
.NET Micro Framework
ASP.NET MVC
ASP.NET Web API
ASP.NET Web Pages
ASP.NET SignalR
MVVM Light Toolkit
.NET Core 5
Orleans
MEF (Managed Extensibility Framework)
OWIN Authentication MiddlewareRx (Reactive Extensions)
Orchard CMS
Windows Azure .NET SDK
Thinktecture IdentityManager
WnsRecipe
Mimekit Xamarin.Auth
Xamarin.Mobile
Couchbase for .NET
Meet the people behind the .NET Foundation
http://www.dotnetfoundation.org/teamhttp://www.dotnetfoundation.org
@dotnetfdn
Mailkit
System.Drawing
ASP.NET 5
Salesforce Toolkits for .NET
NuGetKudu
Cecil
MSBuild
LLILC
Prism
WorldWide Telescope
Microsoft Confidential
Practices Visibility
Mentorship
Support
Governance
Feedback
Media
Events
Fostering a vibrant .NET ecosystem
Protection
Licenses
Copyrights
Trademarks
Patents
dotnetfoundation.org
dotnet.github.io
@dotnetfdn
Openness.
Community.
Rapid innovation.
.NET Foundation Support Services
• CLA Automation (inc self-service admin)
• Domain Registration
• DNS Management
• SSL Certs
• Authenticode Code Signing
• Secret Management
• Financial Authority
• Forums
• Email
• MSDN
• Swag
Microsoft Confidential
.NET Innovation Cross-PlatformOpen Source
The road ahead for .NET
.NET Core
ASP.NET 5
.NET 2015
.NET Framework: Windows & full BCL
.NET Core: cross-platform & open-source
.NET Framework
• Windows
• ASP.NET 5
• ASP.NET 4.6
• WPF
• Windows Forms
.NET Core
• Cross-platform
• 100% open-source
• Application-local framework
• Modular, using NuGet
.NET Native
• Compiled to native code
• Universal Windows Platform (UWP) apps
• IoT devices, Mobile, PC, Xbox, Surface Hub
.NET Cross Platform
• Linux: .NET Core + VS Code + OmniSharp
• OSX: .NET Core + VS Code + OmniSharp
• iOS & Android: Xamarin
• Windows: .NET Framework, Core, VS, VS Code, OmniSharp
.NET Open Source
• .NET Core: CoreFx and CoreCLR
• Full stack of C#, VB, and F#
C# Design Process
• Design meetings up to 4 times a week
• Design reviews once a month
• Proposals and design notes on GitHub
• Prototypes for early feedback
C# Evolution
C# 1
Hello World
C# 2
Generics
C# 3
Linq
C# 4
Dynamic
C# 5
Async
C# 6
Boilerplate
C# 7
???
Roslyn: Great for consumers
• Delightful IDE experiences
• Code-aware libraries
• A new generation of code analysis
Roslyn: Great for extenders
• Rich APIs for understanding code
• Analyzer and code fix framework
Roslyn: Great for us
• Written in C#
• Beautiful architecture
• Less duplication between layers
• A lot easier to write new features
C# 6 auto-property initializers
public string FirstName { get; set; } = "Jane";
C# 6 getter-only auto-properties
public string FullName { get; } = "Jane Doe";
public Person(string first, string last)
{
FullName = first + " " + last;
}
C# 6 expression-bodied members
public void Print() => Console.WriteLine(FullName);
public string FullName => First + " " + Last;
C# 6 using static
using static Console;
using static System.DayOfWeek;
WriteLine(Wednesday – Monday);
C# 6 null-conditional operators
if (json?["x"]?.Type == JTokenType.Integer &&
json?["y"]?.Type == JTokenType.Integer)
{
return new Point((int)json["x"], (int) json["y"]);
}
return null;
C# 6 string interpolation
var s = $"http://weblogs.asp.net/{blog}/{slug}";
Console.WriteLine($"({point.X}, {point.Y})");
C# 6 nameof
public Point Add(Point point)
{
if (point == null)
{
throw new ArgumentNullException(nameof(point));
}
}
C# 6 index initializers
return new JObject { ["x"] = X, ["y"] = Y };
C# 6 exception filters & await in catch
try { … }
catch (SomeException e) when (e.IsCatastrophic)
{
await LogAsync(e);
}
finally
{
await CloseAsync();
}
C# 7 Competition
• Java
• “Systems”: Go, Rust, D, …
• “Functional”: F#, Scala, Erlang, Clojure, …
• “Compute”: Python, R, Matlab
• JavaScript
• Swift
Trends to watch for C# 7
• Cloud & devices
• Wire data
• Performance
• Asynchrony
Pattern matching
if (o is Point p && p.X == 5) { WriteLine(p.Y); }
if (o is Point{ X is 5, Y is var y }) { WriteLine(y); }
if (o is Point(5, var y)) { WriteLine(y); }
Patterns in switch statements
switch (o)
{
case string s:
Console.WriteLine(s);
break;
case int i:
Console.WriteLine($"Number {i}");
break;
case Point(int x, int y):
Console.WriteLine($"({x},{y})");
break;
case null:
Console.WriteLine("<null>");
break;
}
Tuple types
public (int sum, int count) Tally(IEnumerable<int> values) { … }
var t = Tally(myValues);
Console.WriteLine($"Sum: {t.sum}, count: {t.count}");
public async Task<(int sum, int count)> TallyAsync(IEnumerable<int> values) { … }
var t = await TallyAsync(myValues);
Console.WriteLine($"Sum: {t.sum}, count: {t.count}");
Tuple literals
public (int sum, int count) Tally(IEnumerable<int> values)
{
var s = 0; var c = 0;
foreach (var value in values) { s += value; c++; }
return (s, c);
}
public (int sum, int count) Tally(IEnumerable<int> values)
{
var res = (sum: 0, count: 0);
foreach (var value in values) { res.sum += value; res.count++; }
return res;
}
Nullable and non-nullable reference types
string? n; // Nullable reference type
string s; // Non-nullable reference type
n = null; // Sure; it's nullable
s = null; // Warning! Shouldn’t be null!
s = n; // Warning! Really!
WriteLine(s.Length); // Sure; it’s not null
WriteLine(n.Length); // Warning! Could be null!
if (n != null) { WriteLine(n.Length); } // Sure; you checked
Local functions
IEnumerable<T> Filter<T>(IEnumerable<T> source, Func<T, bool> predicate)
{
if (source == null) throw new ArgumentNullException(nameof(source));
if (predicate == null) throw new ArgumentNullException(nameof(predicate));
IEnumerable<T> Iterator()
{
foreach (var element in source)
if (predicate(element))
yield return element;
}
return Iterator();
}
Other top feature ideas
Shorthand “record” types
Preferably with subclasses
Support immutable records and non-destructive mutation
Extension “everything”
Great partner feature to pattern matching
Typed “views” of wire data
Like TypeScript types? Like F# type providers?
Ref returns and array slices
For performance-critical code
Async collections and streams
Async iterators and async foreach?

More Related Content

What's hot

使用.NET构建轻量级分布式框架
使用.NET构建轻量级分布式框架使用.NET构建轻量级分布式框架
使用.NET构建轻量级分布式框架
jeffz
 

What's hot (20)

Modern frontend in react.js
Modern frontend in react.jsModern frontend in react.js
Modern frontend in react.js
 
Hands on clang-format
Hands on clang-formatHands on clang-format
Hands on clang-format
 
Grant Rogerson SDEC2015
Grant Rogerson SDEC2015Grant Rogerson SDEC2015
Grant Rogerson SDEC2015
 
Ruxmon.2013-08.-.CodeBro!
Ruxmon.2013-08.-.CodeBro!Ruxmon.2013-08.-.CodeBro!
Ruxmon.2013-08.-.CodeBro!
 
Google Dart
Google DartGoogle Dart
Google Dart
 
Type script, for dummies
Type script, for dummiesType script, for dummies
Type script, for dummies
 
使用.NET构建轻量级分布式框架
使用.NET构建轻量级分布式框架使用.NET构建轻量级分布式框架
使用.NET构建轻量级分布式框架
 
JS Fest 2018. Виталий Ратушный. ES X
JS Fest 2018. Виталий Ратушный. ES XJS Fest 2018. Виталий Ратушный. ES X
JS Fest 2018. Виталий Ратушный. ES X
 
GOCON Autumn (Story of our own Monitoring Agent in golang)
GOCON Autumn (Story of our own Monitoring Agent in golang)GOCON Autumn (Story of our own Monitoring Agent in golang)
GOCON Autumn (Story of our own Monitoring Agent in golang)
 
10 reasons to be excited about go
10 reasons to be excited about go10 reasons to be excited about go
10 reasons to be excited about go
 
Review: Apitrace and Vogl
Review: Apitrace and VoglReview: Apitrace and Vogl
Review: Apitrace and Vogl
 
DConf 2016: Keynote by Walter Bright
DConf 2016: Keynote by Walter Bright DConf 2016: Keynote by Walter Bright
DConf 2016: Keynote by Walter Bright
 
Vladymyr Bahrii Understanding polymorphism in C++ 16.11.17
Vladymyr Bahrii Understanding polymorphism in C++ 16.11.17Vladymyr Bahrii Understanding polymorphism in C++ 16.11.17
Vladymyr Bahrii Understanding polymorphism in C++ 16.11.17
 
Boosting Developer Productivity with Clang
Boosting Developer Productivity with ClangBoosting Developer Productivity with Clang
Boosting Developer Productivity with Clang
 
Why scala is not my ideal language and what I can do with this
Why scala is not my ideal language and what I can do with thisWhy scala is not my ideal language and what I can do with this
Why scala is not my ideal language and what I can do with this
 
Basic c++ 11/14 for python programmers
Basic c++ 11/14 for python programmersBasic c++ 11/14 for python programmers
Basic c++ 11/14 for python programmers
 
Flying under the radar
Flying under the radarFlying under the radar
Flying under the radar
 
Modern PHP
Modern PHPModern PHP
Modern PHP
 
Writing multi-language documentation using Sphinx
Writing multi-language documentation using SphinxWriting multi-language documentation using Sphinx
Writing multi-language documentation using Sphinx
 
Handling inline assembly in Clang and LLVM
Handling inline assembly in Clang and LLVMHandling inline assembly in Clang and LLVM
Handling inline assembly in Clang and LLVM
 

Similar to .NET Foundation, Future of .NET and C#

[Td 2015] what is new in visual c++ 2015 and future directions(ulzii luvsanba...
[Td 2015] what is new in visual c++ 2015 and future directions(ulzii luvsanba...[Td 2015] what is new in visual c++ 2015 and future directions(ulzii luvsanba...
[Td 2015] what is new in visual c++ 2015 and future directions(ulzii luvsanba...
Sang Don Kim
 
(ThoughtWorks Away Day 2009) one or two things you may not know about typesys...
(ThoughtWorks Away Day 2009) one or two things you may not know about typesys...(ThoughtWorks Away Day 2009) one or two things you may not know about typesys...
(ThoughtWorks Away Day 2009) one or two things you may not know about typesys...
Phil Calçado
 

Similar to .NET Foundation, Future of .NET and C# (20)

Novidades do c# 7 e 8
Novidades do c# 7 e 8Novidades do c# 7 e 8
Novidades do c# 7 e 8
 
Microsoft 2014 Dev Plataform - Roslyn -& ASP.NET vNext
Microsoft 2014 Dev Plataform -  Roslyn -& ASP.NET vNextMicrosoft 2014 Dev Plataform -  Roslyn -& ASP.NET vNext
Microsoft 2014 Dev Plataform - Roslyn -& ASP.NET vNext
 
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8TDC2018SP | Trilha .Net - Novidades do C# 7 e 8
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8
 
Next .NET and C#
Next .NET and C#Next .NET and C#
Next .NET and C#
 
C# What's next? (7.x and 8.0)
C# What's next? (7.x and 8.0)C# What's next? (7.x and 8.0)
C# What's next? (7.x and 8.0)
 
Effective Object Oriented Design in Cpp
Effective Object Oriented Design in CppEffective Object Oriented Design in Cpp
Effective Object Oriented Design in Cpp
 
Roslyn: el futuro de C# y VB.NET by Rodolfo Finochietti
Roslyn: el futuro de C# y VB.NET by Rodolfo FinochiettiRoslyn: el futuro de C# y VB.NET by Rodolfo Finochietti
Roslyn: el futuro de C# y VB.NET by Rodolfo Finochietti
 
Roslyn: el futuro de C#
Roslyn: el futuro de C#Roslyn: el futuro de C#
Roslyn: el futuro de C#
 
PyData Berlin Meetup
PyData Berlin MeetupPyData Berlin Meetup
PyData Berlin Meetup
 
[Td 2015] what is new in visual c++ 2015 and future directions(ulzii luvsanba...
[Td 2015] what is new in visual c++ 2015 and future directions(ulzii luvsanba...[Td 2015] what is new in visual c++ 2015 and future directions(ulzii luvsanba...
[Td 2015] what is new in visual c++ 2015 and future directions(ulzii luvsanba...
 
C# 6 and 7 and Futures 20180607
C# 6 and 7 and Futures 20180607C# 6 and 7 and Futures 20180607
C# 6 and 7 and Futures 20180607
 
(ThoughtWorks Away Day 2009) one or two things you may not know about typesys...
(ThoughtWorks Away Day 2009) one or two things you may not know about typesys...(ThoughtWorks Away Day 2009) one or two things you may not know about typesys...
(ThoughtWorks Away Day 2009) one or two things you may not know about typesys...
 
A la découverte de TypeScript
A la découverte de TypeScriptA la découverte de TypeScript
A la découverte de TypeScript
 
Roslyn and C# 6.0 New Features
Roslyn and C# 6.0 New FeaturesRoslyn and C# 6.0 New Features
Roslyn and C# 6.0 New Features
 
The First C# Project Analyzed
The First C# Project AnalyzedThe First C# Project Analyzed
The First C# Project Analyzed
 
iPhone Development Intro
iPhone Development IntroiPhone Development Intro
iPhone Development Intro
 
Introduction to Xamarin for Visual Studio 2017
Introduction to Xamarin for Visual Studio 2017Introduction to Xamarin for Visual Studio 2017
Introduction to Xamarin for Visual Studio 2017
 
NodeJS for Beginner
NodeJS for BeginnerNodeJS for Beginner
NodeJS for Beginner
 
Lambdas puzzler - Peter Lawrey
Lambdas puzzler - Peter LawreyLambdas puzzler - Peter Lawrey
Lambdas puzzler - Peter Lawrey
 
Oh Crap, I Forgot (Or Never Learned) C! [CodeMash 2010]
Oh Crap, I Forgot (Or Never Learned) C! [CodeMash 2010]Oh Crap, I Forgot (Or Never Learned) C! [CodeMash 2010]
Oh Crap, I Forgot (Or Never Learned) C! [CodeMash 2010]
 

More from Bertrand Le Roy (6)

Orchard 2... and why you should care
Orchard 2... and why you should careOrchard 2... and why you should care
Orchard 2... and why you should care
 
.Net Core
.Net Core.Net Core
.Net Core
 
Orchard Harvest Keynote 2015 - the CMS of the future
Orchard Harvest Keynote 2015 - the CMS of the futureOrchard Harvest Keynote 2015 - the CMS of the future
Orchard Harvest Keynote 2015 - the CMS of the future
 
Best kept Orchard recipes - Orchard Harvest Amsterdam 2013
Best kept Orchard recipes - Orchard Harvest Amsterdam 2013Best kept Orchard recipes - Orchard Harvest Amsterdam 2013
Best kept Orchard recipes - Orchard Harvest Amsterdam 2013
 
Commerce - Orchard Harvest Amsterdam 2013
Commerce - Orchard Harvest Amsterdam 2013Commerce - Orchard Harvest Amsterdam 2013
Commerce - Orchard Harvest Amsterdam 2013
 
Orchard Harvest Amsterdam 2013 Keynote
Orchard Harvest Amsterdam 2013 KeynoteOrchard Harvest Amsterdam 2013 Keynote
Orchard Harvest Amsterdam 2013 Keynote
 

Recently uploaded

%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
masabamasaba
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
shinachiaurasa2
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
VictoriaMetrics
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
9953056974 Low Rate Call Girls In Saket, Delhi NCR
 

Recently uploaded (20)

tonesoftg
tonesoftgtonesoftg
tonesoftg
 
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
 
%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto
 
%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
 
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfPayment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
 
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionIntroducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students
 
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
 
WSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go PlatformlessWSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go Platformless
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 

.NET Foundation, Future of .NET and C#

  • 1. .NET Foundation The future of .NET & C# Martin Woodward, Bertrand Le Roy
  • 2.
  • 6.
  • 7.
  • 8. The .NET Foundation .NET API for Hadoop WebClient .NET Compiler Platform ("Roslyn") .NET Map Reduce API for Hadoop .NET Micro Framework ASP.NET MVC ASP.NET Web API ASP.NET Web Pages ASP.NET SignalR MVVM Light Toolkit .NET Core 5 Orleans MEF (Managed Extensibility Framework) OWIN Authentication MiddlewareRx (Reactive Extensions) Orchard CMS Windows Azure .NET SDK Thinktecture IdentityManager WnsRecipe Mimekit Xamarin.Auth Xamarin.Mobile Couchbase for .NET Meet the people behind the .NET Foundation http://www.dotnetfoundation.org/teamhttp://www.dotnetfoundation.org @dotnetfdn Mailkit System.Drawing ASP.NET 5 Salesforce Toolkits for .NET NuGetKudu Cecil MSBuild LLILC Prism WorldWide Telescope Microsoft Confidential
  • 9. Practices Visibility Mentorship Support Governance Feedback Media Events Fostering a vibrant .NET ecosystem Protection Licenses Copyrights Trademarks Patents dotnetfoundation.org dotnet.github.io @dotnetfdn Openness. Community. Rapid innovation.
  • 10. .NET Foundation Support Services • CLA Automation (inc self-service admin) • Domain Registration • DNS Management • SSL Certs • Authenticode Code Signing • Secret Management • Financial Authority • Forums • Email • MSDN • Swag
  • 11.
  • 12.
  • 14. .NET Innovation Cross-PlatformOpen Source The road ahead for .NET .NET Core ASP.NET 5
  • 15. .NET 2015 .NET Framework: Windows & full BCL .NET Core: cross-platform & open-source
  • 16. .NET Framework • Windows • ASP.NET 5 • ASP.NET 4.6 • WPF • Windows Forms
  • 17. .NET Core • Cross-platform • 100% open-source • Application-local framework • Modular, using NuGet
  • 18. .NET Native • Compiled to native code • Universal Windows Platform (UWP) apps • IoT devices, Mobile, PC, Xbox, Surface Hub
  • 19. .NET Cross Platform • Linux: .NET Core + VS Code + OmniSharp • OSX: .NET Core + VS Code + OmniSharp • iOS & Android: Xamarin • Windows: .NET Framework, Core, VS, VS Code, OmniSharp
  • 20. .NET Open Source • .NET Core: CoreFx and CoreCLR • Full stack of C#, VB, and F#
  • 21. C# Design Process • Design meetings up to 4 times a week • Design reviews once a month • Proposals and design notes on GitHub • Prototypes for early feedback
  • 22. C# Evolution C# 1 Hello World C# 2 Generics C# 3 Linq C# 4 Dynamic C# 5 Async C# 6 Boilerplate C# 7 ???
  • 23. Roslyn: Great for consumers • Delightful IDE experiences • Code-aware libraries • A new generation of code analysis
  • 24. Roslyn: Great for extenders • Rich APIs for understanding code • Analyzer and code fix framework
  • 25. Roslyn: Great for us • Written in C# • Beautiful architecture • Less duplication between layers • A lot easier to write new features
  • 26. C# 6 auto-property initializers public string FirstName { get; set; } = "Jane";
  • 27. C# 6 getter-only auto-properties public string FullName { get; } = "Jane Doe"; public Person(string first, string last) { FullName = first + " " + last; }
  • 28. C# 6 expression-bodied members public void Print() => Console.WriteLine(FullName); public string FullName => First + " " + Last;
  • 29. C# 6 using static using static Console; using static System.DayOfWeek; WriteLine(Wednesday – Monday);
  • 30. C# 6 null-conditional operators if (json?["x"]?.Type == JTokenType.Integer && json?["y"]?.Type == JTokenType.Integer) { return new Point((int)json["x"], (int) json["y"]); } return null;
  • 31. C# 6 string interpolation var s = $"http://weblogs.asp.net/{blog}/{slug}"; Console.WriteLine($"({point.X}, {point.Y})");
  • 32. C# 6 nameof public Point Add(Point point) { if (point == null) { throw new ArgumentNullException(nameof(point)); } }
  • 33. C# 6 index initializers return new JObject { ["x"] = X, ["y"] = Y };
  • 34. C# 6 exception filters & await in catch try { … } catch (SomeException e) when (e.IsCatastrophic) { await LogAsync(e); } finally { await CloseAsync(); }
  • 35. C# 7 Competition • Java • “Systems”: Go, Rust, D, … • “Functional”: F#, Scala, Erlang, Clojure, … • “Compute”: Python, R, Matlab • JavaScript • Swift
  • 36. Trends to watch for C# 7 • Cloud & devices • Wire data • Performance • Asynchrony
  • 37. Pattern matching if (o is Point p && p.X == 5) { WriteLine(p.Y); } if (o is Point{ X is 5, Y is var y }) { WriteLine(y); } if (o is Point(5, var y)) { WriteLine(y); }
  • 38. Patterns in switch statements switch (o) { case string s: Console.WriteLine(s); break; case int i: Console.WriteLine($"Number {i}"); break; case Point(int x, int y): Console.WriteLine($"({x},{y})"); break; case null: Console.WriteLine("<null>"); break; }
  • 39. Tuple types public (int sum, int count) Tally(IEnumerable<int> values) { … } var t = Tally(myValues); Console.WriteLine($"Sum: {t.sum}, count: {t.count}"); public async Task<(int sum, int count)> TallyAsync(IEnumerable<int> values) { … } var t = await TallyAsync(myValues); Console.WriteLine($"Sum: {t.sum}, count: {t.count}");
  • 40. Tuple literals public (int sum, int count) Tally(IEnumerable<int> values) { var s = 0; var c = 0; foreach (var value in values) { s += value; c++; } return (s, c); } public (int sum, int count) Tally(IEnumerable<int> values) { var res = (sum: 0, count: 0); foreach (var value in values) { res.sum += value; res.count++; } return res; }
  • 41. Nullable and non-nullable reference types string? n; // Nullable reference type string s; // Non-nullable reference type n = null; // Sure; it's nullable s = null; // Warning! Shouldn’t be null! s = n; // Warning! Really! WriteLine(s.Length); // Sure; it’s not null WriteLine(n.Length); // Warning! Could be null! if (n != null) { WriteLine(n.Length); } // Sure; you checked
  • 42. Local functions IEnumerable<T> Filter<T>(IEnumerable<T> source, Func<T, bool> predicate) { if (source == null) throw new ArgumentNullException(nameof(source)); if (predicate == null) throw new ArgumentNullException(nameof(predicate)); IEnumerable<T> Iterator() { foreach (var element in source) if (predicate(element)) yield return element; } return Iterator(); }
  • 43. Other top feature ideas Shorthand “record” types Preferably with subclasses Support immutable records and non-destructive mutation Extension “everything” Great partner feature to pattern matching Typed “views” of wire data Like TypeScript types? Like F# type providers? Ref returns and array slices For performance-critical code Async collections and streams Async iterators and async foreach?

Editor's Notes

  1. Description (“what is the .NET Foundation”) The .NET Foundation is an independent organization created to foster open development and collaboration around the growing collection of open source technologies for.NET. It will serve as a forum for commercial and community developers alike with a set of practices and processes that strengthen the future of the .NET ecosystem. Story telling (“why the .NET Foundation”) Three years ago we announced how some key components of .NET such as ASP.NET MVC or Entity Framework embraced a new development process that was more transparent, open, and community driven. Since then, we have only received great feedback from you. Increasing our investments in .NET, while opening the process to the community has allowed .NET to innovate faster with feedback and contributions. With the .NET Foundation we want to extend this new development model to be the norm for .NET and not the exception. We want to make sure that .NET projects (both from Microsoft and from other companies and individual contributors) have a place that provides the mechanisms to promote the openness, community participation and rapid innovation to build the next generation of the .NET ecosystem. There are currently 31 projects and 81 repositories in the .NET Foundation. http://www.dotnetfoundation.org/projects
  2. Check dotnet.github.io for up to date stats and update slide! .NET Foundation foster openness, community and rapid innovation around .NET by providing legal protection, open practices & support as well as visibility to projects. The frameworks for these pillars will be defined by the advisory council and board of directors. Messaging pillars (“what are the top three things I need to know about the .NET Foundation”) It opens the development process for .NET: The .NET Foundation brings into one common umbrella existing and new relevant open source projects for the .NET platform, such as .NET Core, ASP.NET and .NET Compiler Platform (“Roslyn”). The .NET Foundation will provide the frame for making this the norm moving forward, so more and more components and libraries of .NET are using an open process that is transparent and welcomes your participation. It encourages customers, partners and the broader community to participate: The .NET Foundation will foster the involvement and direct code contributions from the community, both through its board members as well as directly from individual developers, through an open and transparent governance model that strengthens the future of .NET. It promotes innovation by a vibrant partner ecosystem and open source community: The .NET Foundation will promote commercial partners and open source developers to build solutions that leverage the platform openness to provide additional innovation to .NET developers. This includes extending .NET to other platforms, extending Visual Studio to create new experiences, providing additional tools or extending the framework and libraries with new capabilities. Call to action: Join the conversation We are in the process of defining the advisory council with the community and getting the .NET Foundation activities off the ground. We’ve been taking feedback from the community from the start. Join the conversation on our forums at forums.dotnetfoundation.org. Meet the team behind the foundation at dotnetfoundation.org/team
  3. https://msdn.microsoft.com/library/windows/apps/dn894631.aspx
  4. Initializers for auto-properties
  5. Getter-only auto-properties (can also be set from the constructor)
  6. Expression-bodied methods and properties
  7. Using static
  8. Null-conditional
  9. String interpolation Expressions, full IntelliSense & refactoring support in the holes.
  10. Nameof
  11. Index initializers
  12. Exception filters & await in catch and finally
  13. Java: somewhat uncool, great ecosystem, evolving again “Systems”: performance-productivity-reliability triangle “Functional”: Decidedly cool, and on the right side of history, but also elitist “Compute”: captures lots of cloud cycles JavaScript: it’s everywhere, getting better, and is helped by TypeScript Swift: captive audience, mainstreaming advanced features, has lots of mindshare
  14. Wire data: untyped, semi-structured; translating to strong types is expensive and lossy; bad match for OO: functions are not on the inside of the objects. Perf: devices get smaller; in the cloud, time and space are money Async: latency must be taken into account; current model deals with single values, not with collections that can be asynchronously enumerated