17. 61%YoY Growth .NET Active Developers
(VS 2012+)
40%.NET Core downloads by new developers 62% GitHub contributions from outside of Microsoft
(corefx / coreclr repos)
0
100
200
300
400
500
600
700
800
900
Jan
Feb
Mar
Apr
May
Jun
Jul
Aug
Oct
Nov
Dec
Jan
Feb
Mar
Apr
May
Jun
Jul
Aug
Oct
Nov
Dec
Jan
Feb
Mar
Apr
May
Jun
Jul
Aug
Qtr1 Qtr2 Qtr3 Qtr4 Qtr1 Qtr2 Qtr3 Qtr4 Qtr1 Qtr2 Qtr3
2014 2015 2016
Community PRs by month
38. • Use the current release to get the latest features
• Supported as long as you keep updating to the latest
• Use the Long Term Support release as the most stable platform
• LTS is fully supported for 3 years and receives regular important updates
• You can mix and match your strategy (even in the same machine!)
Current (1.1)
Long Term
Support (LTS)
1.0
54. Bot Framework
Your bots – wherever your users are
talking.
Build and connect intelligent bots to interact
with your users naturally wherever they are,
from text/SMS to Skype, Slack, Messenger,
Office 365 mail and other popular services.
90. public void PrintStars(object o)
{
if (o is null) return; // constant pattern "null"
if (!(o is int i)) return; // type pattern "int i"
}
91. public void PrintStars(object o)
{
if (o is null) return; // constant pattern "null"
if (!(o is int i)) return; // type pattern "int i"
WriteLine(new string('*', i));
}
94. switch (shape) // Switch on anything
{
case null:
throw new ArgumentNullException(nameof(shape));
default:
WriteLine("<unknown shape>");
break;
}
95. switch (shape) // Switch on anything
{
case Circle c: // Type pattern
break;
case null:
throw new ArgumentNullException(nameof(shape));
default:
WriteLine("<unknown shape>");
break;
}
96. switch (shape) // Switch on anything
{
case Circle c: // Type pattern
WriteLine($"circle with radius {c.Radius}"); // use c
break;
case null:
throw new ArgumentNullException(nameof(shape));
default:
WriteLine("<unknown shape>");
break;
}
97. switch (shape) // Switch on anything
{
case Rectangle r:
WriteLine($"{r.Length} x {r.Height} rectangle");
break;
case Circle c: // Type pattern
WriteLine($"circle with radius {c.Radius}"); // use c
break;
case null:
throw new ArgumentNullException(nameof(shape));
default:
WriteLine("<unknown shape>");
break;
}
98. switch (shape) // Switch on anything
{
case Rectangle s when (s.Length == s.Height): // when-condition
WriteLine($"{s.Length} x {s.Height} square");
break;
case Rectangle r:
WriteLine($"{r.Length} x {r.Height} rectangle");
break;
case Circle c: // Type pattern
WriteLine($"circle with radius {c.Radius}"); // use c
break;
case null:
throw new ArgumentNullException(nameof(shape));
default:
WriteLine("<unknown shape>");
break;
}