C# 7 Series, Part 10: Span<T> and universal memory management

Part 1: Value TuplesPart 2: Async MainPart 3: Default LiteralsPart 4: DiscardsPart 5: Private ProtectedPart 6: Read-only structsPart 7: Ref ReturnsPart 8: “in” ParametersPart 9: ref structsPart 10: (This post) Span<T> and universal memory management Background .NET is a managed platform, that means the memory access and management is safe and automatic. All types are…

2

C# 7 Series, Part 9: ref structs

Part 1: Value TuplesPart 2: Async MainPart 3: Default LiteralsPart 4: DiscardsPart 5: Private ProtectedPart 6: Read-only structsPart 7: Ref ReturnsPart 8: “in” ParametersPart 9: (This post) ref structs Background In the previous posts, I have explained many new C# features, each of the feature is introduced to either enhance the language, or solve issues….

0

C# 7 Series, Part 8: “in” Parameters

C# 7 Series Part 1: Value TuplesPart 2: Async MainPart 3: Default LiteralsPart 4: DiscardsPart 5: Private ProtectedPart 6: Read-only structsPart 7: Ref ReturnsPart 8: (This post) “in” Parameters Background By default, method arguments are passed by value. That is, arguments are copied and passed into the method. Therefore, modification to the argument inside the…

1

C# 7 Series, Part 7: Ref Returns

C# 7 Series Part 1: Value TuplesPart 2: Async MainPart 3: Default LiteralsPart 4: DiscardsPart 5: Private ProtectedPart 6: Read-only structsPart 7: (This post) Ref Returns Background There are two ways to pass an value into a method: Pass by value. When an argument is passed into a method, a copy of the argument (if…

0

C# 7 Series, Part 6: Read-only structs

C# 7 Series Part 1: Value TuplesPart 2: Async MainPart 3: Default LiteralsPart 4: DiscardsPart 5: Private ProtectedPart 6: (This article) Read-only structs Background In .NET world, there are two basic types: reference types and value types. To be short, Reference types are classes that can be inherited/extended, when passing reference type objects, a “pointer”…

2

C# 7 Series, Part 5: Private Protected

C# has several accessibility modifiers, public, internal, internal protected, and private. Public: The member declared with this accessibility can be visible within the assembly containing this member, or any other assembly that references the containing assembly. i.e., access is not limited. Internal: The member declared with this accessibility can be visible within the assembly containing…

10

C# 7 Series, Part 4: Discards

Sometimes we want to ignore values returned from a method, especially those out arguments, a typical example is to check whether a string can be parsed to another type: bool parsedValue;if (bool.TryParse(“TRUE”, out parsedValue)) { /* Do your stuff */ } Here we want to ignore parsedValue. We also want to make this variable inaccessible…

9

C# 7 Series, Part 3: Default Literals

C#’s default keyword has two kinds of usages: one is to label the fallback branch of the switch…case structure (for any path that does not fall into the case conditions); another is to represent the “default” value of a type. I will discuss this usage in this blog. The default value of a type is…

9

C# 7 Series, Part 2: Async Main

As you may know, there are two kinds of the programs the C# language can build. One is a program with an entrypoint so that the Operating System can load the program and execute it from the entrypoint; another is the program without an entrypoint. Operating System cannot directly execute the program, the program can…

14

C# 7 Series, Part 1: Value Tuples

Starting today I will start a new C# 7 series, to introduce new language features of C# 7+ features. Please note that I am not saying C# 7.0, I am saying C# 7 plus, because there will be minor language versions (like 7.1, 7.2) that will bring new features in steps (thanks to Roslyn!) such…

5