C Sharp: Difference between revisions
Jump to navigation
Jump to search
Line 33: | Line 33: | ||
==Pattern Matching== | ==Pattern Matching== | ||
===Deconstructors=== | |||
Hardcoded unlike javascript | |||
<syntaxhighlight lang="C#"> | <syntaxhighlight lang="C#"> | ||
claas Test | |||
{ | { | ||
public | public A {get; set;} | ||
public | public B {get; set;} | ||
public C {get; set;} | |||
Test(string a, string b, string c) | |||
{ | |||
A = a; | |||
B = b; | |||
C = c; | |||
} | |||
void Deconstructor( | |||
out string a, | |||
out string b, | |||
out string c) | |||
{ | |||
a = A; | |||
b = B | |||
c = C; | |||
} | |||
} | |||
</syntaxhighlight> | |||
===Positional Pattern=== | |||
<syntaxhighlight lang="C#"> | |||
switch(myPoint) | |||
{ | |||
case Point(0,0): | |||
return "Origin"; | |||
} | |||
</syntaxhighlight> | |||
===Property Pattern=== | |||
<syntaxhighlight lang="C#"> | |||
public static bool IsUsBasedWithUkManager(object o) | |||
{ | |||
return o is Employee e && | |||
e is { Region: "US", ReportsTo: {Region:" UK" }}; | |||
} | |||
</syntaxhighlight> | |||
===Tuple Pattern=== | |||
<syntaxhighlight lang="C#"> | |||
public statis bool MakesBlue(Color c1, Color c2) | |||
{ | |||
return (c1,c2) is (Color.Red, Color.Green) || | |||
(c2,c1) is (Color.Red, Color.Green); | |||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> |
Revision as of 01:02, 10 August 2020
C# 8.0 and .Net Core 3.0
Intro
Here is the history of C#
- 2.0 included generics
- 3.0 Added Linq with Lambda and anonymous types
- 4.0 Added Dynamics
- 5.0 Added Async and Await
- 6.0 Added Null propagating operator (targer?.IsActive ?? false;
- 7.0 Expressions and Tuples
C# 8.0 brings
- Nullable Reference Types
- Pattern Matching
- Indices and Ranges
- Built-in Json Support
- Windows Desktop Support
- Build and Deploy Improvements
- Other Language Improvements
- Other .NET Core Platform Improvements
Nullable Reference Types
This allows you to specify a possibility of null. e.g.
class
{
public string? Title {get; set;}
public List<Comment> Title {get;} = new List<Comment>();
}
Bad code is highlighted a compile time with CS8618 Non-nullable property and via intellisence.
You and enable and restore this feature on a file basis using #nullable enable and #nullable restore
Pattern Matching
Deconstructors
Hardcoded unlike javascript
claas Test
{
public A {get; set;}
public B {get; set;}
public C {get; set;}
Test(string a, string b, string c)
{
A = a;
B = b;
C = c;
}
void Deconstructor(
out string a,
out string b,
out string c)
{
a = A;
b = B
c = C;
}
}
Positional Pattern
switch(myPoint)
{
case Point(0,0):
return "Origin";
}
Property Pattern
public static bool IsUsBasedWithUkManager(object o)
{
return o is Employee e &&
e is { Region: "US", ReportsTo: {Region:" UK" }};
}
Tuple Pattern
public statis bool MakesBlue(Color c1, Color c2)
{
return (c1,c2) is (Color.Red, Color.Green) ||
(c2,c1) is (Color.Red, Color.Green);
}