9.1
9.5
19
22.3
28.1
32
34.1
39.7
51.2
62.5
0 10 20 30 40 50 60 70
Ruby
TypeScript
C
C++
PHP
Python
C#
Java
SQL
JavaScript
Percentage
Ruby TypeScript C C++ PHP Python C# Java SQL JavaScript
0 10 20 30 40 50 60 70 80
Clojure
Scala
C#
Elixir
Python
Go
Swift
TypeScript
Smalltalk
Rust
Percentage
Clojure Scala C# Elixir Python Go Swift TypeScript Smalltalk Rust
C#
1,000,000’s
Millions
VB
F#
100,000’s
Hundreds of thousands
10,000’s
Tens of thousands
It’s there use it
First point release – tiny features
Safe efficient low level code
Next steps for pattern matching
Major features
IAsyncEnumerable<Person> people = database.GetPeopleAsync();
foreach await (var p in people) { … }
using await (IAsyncDisposable resource = await store.GetRecordAsync(…)) { … }
extension Enrollee extends Person
{
// static field
static Dictionary<Person, Professor> enrollees = new Dictionary<Person, Professor>();
// instance method
public void Enroll(Professor supervisor) { enrollees[this] = supervisor; }
// instance property
public Professor Supervisor => enrollees.TryGetValue(this, out var supervisor) ? supervisor : null;
// static property
public static ICollection<Person> Students => enrollees.Keys;
// instance constructor
public Person(string name, Professor supervisor) : this(name) { this.Enroll(supervisor); }
}
class Person : IEquatable<Person>
{
public string First { get; }
public string Last { get; }
public Person(string First, string Last) => (this.First, this.Last) = (First, Last);
public void Deconstruct(out string First, out string Last)
=> (First, Last) = (this.First, this.Last);
public bool Equals(Person other)
=> other != null && First == other.First && Last == other.Last;
public override bool Equals(object obj) => obj is Person other ? Equals(other) :
false;
public override int GetHashCode() => GreatHashFunction(First, Last);
…
}
class Person(string First, string Last);
Future of C Sharp (C#)
Future of C Sharp (C#)

Future of C Sharp (C#)

  • 2.
    9.1 9.5 19 22.3 28.1 32 34.1 39.7 51.2 62.5 0 10 2030 40 50 60 70 Ruby TypeScript C C++ PHP Python C# Java SQL JavaScript Percentage Ruby TypeScript C C++ PHP Python C# Java SQL JavaScript
  • 3.
    0 10 2030 40 50 60 70 80 Clojure Scala C# Elixir Python Go Swift TypeScript Smalltalk Rust Percentage Clojure Scala C# Elixir Python Go Swift TypeScript Smalltalk Rust
  • 4.
  • 5.
    It’s there useit First point release – tiny features Safe efficient low level code Next steps for pattern matching Major features
  • 6.
    IAsyncEnumerable<Person> people =database.GetPeopleAsync(); foreach await (var p in people) { … } using await (IAsyncDisposable resource = await store.GetRecordAsync(…)) { … }
  • 7.
    extension Enrollee extendsPerson { // static field static Dictionary<Person, Professor> enrollees = new Dictionary<Person, Professor>(); // instance method public void Enroll(Professor supervisor) { enrollees[this] = supervisor; } // instance property public Professor Supervisor => enrollees.TryGetValue(this, out var supervisor) ? supervisor : null; // static property public static ICollection<Person> Students => enrollees.Keys; // instance constructor public Person(string name, Professor supervisor) : this(name) { this.Enroll(supervisor); } }
  • 8.
    class Person :IEquatable<Person> { public string First { get; } public string Last { get; } public Person(string First, string Last) => (this.First, this.Last) = (First, Last); public void Deconstruct(out string First, out string Last) => (First, Last) = (this.First, this.Last); public bool Equals(Person other) => other != null && First == other.First && Last == other.Last; public override bool Equals(object obj) => obj is Person other ? Equals(other) : false; public override int GetHashCode() => GreatHashFunction(First, Last); … } class Person(string First, string Last);