Lambda expressions, 2nd, 3rd, 4th, 5th
capturing variables
implementing captured variables with generated class
multiple instantiations of local variables
from multiple scopes
expression trees
compiling to delegates
limitations of conversions to
syntax of
Language Design Meetings (LDMs)
language support
? type suffix
conversions
lifted operators
null literal
nullable logic
null-coalescing ?? operator
lazy exceptions, 2nd
lazy execution
importance of
overview of
LDMs.
See Language Design Meetings.
Length property, 2nd, 3rd
let clause
libraries for dynamic typing
lifted operators
lifting
linking
LINQ framework
data access with
overview of
syntax of
LINQ queries
List collection, 2nd, 3rd
literals
binary integer
default
index
null
range.
See also interpolated string literals.
literal-to-type conversion
local methods
declaring
escaping containing code
implementing
interacting with definite assignment
optimizing
read-only fields and
usage guidelines
iterator/async argument validation
suggestions for readability
variables within
capturing ref parameters of enclosing methods
capturing variables in scope
local variables
implicitly typed
multiple instantiations of
overview of, 2nd
localization
formatting for machines
formatting with default cultures
using FormattableString
compiler handling of interpolated string literals
formatting FormattableString in specific cultures
uses for FormattableString
using FormattableString with older versions of .NET
localized data
lock statement
logging
caller information attributes
as side effect
logic
nullable
performing on another piece of state
loops
awaiting within
foreach
machine.builder field
machine.builder.Start() method
machine-readable strings
Main() method, 2nd, 3rd, 4th, 5th, 6th, 7th, 8th, 9th, 10th
matching.
See pattern matching.
matching properties in patterns
MaxBy method
member initializers
members
common members without common interface
dynamically invoked
non-obvious member names
of other types, referring to
static.
See also expression-bodied members.
message pump
MessageBox.Show method
metadata
method calls
chaining
determining meaning of
method completion
argument validation
handling cancellations
lazy exceptions
returning successfully
method declarations.
See also asynchronous methods, method declarations.
method flow.
See asynchronous methods, flow.
method group conversions, 2nd
method returns
method syntax
[MethodImpl] attribute
MethodInfo, 2nd
methods
anonymous
enclosing
expression-bodied
generic
interface
partial
reexposing
type arguments to.
See also asynchronous methods; ; extension methods; ; MoveNext() method.
Microsoft C# compiler
Microsoft.Bcl package, NuGet
Microsoft.CSharp.RuntimeBinder
migration of nullable reference types
best practices for using bang operators
end results
expressing nullable intent with attributes
iterations
null-inconsistent generics
minor versions
model-view-viewmodel (MVVM)
modreq modifier
Monitor.Exit method
Monitor.TryEnter method
MoreLinq package
MoveNext() method, 2nd, 3rd, 4th, 5th, 6th
control flow and
awaiting within loops
awaiting within try/finally blocks
control flow between await expressions
examples of
general structure of
implementing
MulticastDelegate
mutability of in parameters
mutable value types
MVVM.
See model-view-viewmodel.
name attribute
named arguments, nontrailing
named indexers
named types
nameof operator, 2nd, 3rd, 4th
accessing identifiers with
common uses of
argument validation
attributes
property change notifications for computed properties
examples of
tricks when using
array types
generics
namespaces
nullable value types
predefined aliases
referring to members of other types
simple name
using aliases
names
accessing elements by
of members
of parameters
simple name.
See also element names.
namespace aliases
extern aliases
global namespace
qualifier syntax
namespaces
nested patterns
.NET platform
caller information attributes with
FormattableString with
formatting strings in
custom formatting with format strings
localization
simple string formatting
Noda Time, 2nd, 3rd, 4th, 5th
nonasync method
noncompleted tasks
nongeneric ValueTuple struct
noninvariant cultures
non-obvious member names
nonpublic APIs
nontrailing named arguments
nontuple types, deconstruction of
compiler handling of Deconstruct calls
extension deconstruction methods
instance deconstruction methods
overloading
Not started state
NotifyOfPropertyChange method
NotImplementedException
NotSupportedException
NuGet (NuPack) package manager
null conditional operators, 2nd
dereferencing properties
handling Boolean comparisons
indexers and
limitations of
overview of
working with
event raising
null-returning APIs
null literals
null values
nullability checking
Nullable class
nullable integers
nullable intent
Nullable interface
nullable logic
nullable reference types, 2nd
advantages of
bang operator
changing meaning when using reference types
at compile time
entering
at execution time
future improvements to
deeper thinking about generics
enabling nullability checking
opt-in parameter validation
providing compilers with semantic information
migration of
best practices for using bang operators
end results
expressing nullable intent with attributes
iterations
null-inconsistent generics
Nullable struct
nullable value types, 2nd, 3rd
as operator and
expressing absence of information
language support
? type suffix
conversions
lifted operators
null literal
nullable logic
null-coalescing ?? operator
Nullable struct
null-coalescing ?? operator, 2nd
null-inconsistent generics
NullPointerException
NullReferenceException, 2nd, 3rd, 4th, 5th, 6th, 7th, 8th, 9th
null-returning APIs
numeric literals, improvements to
binary integer literals
underscore separators
object initializers, 2nd
benefits of single expressions for initialization
enhancements to
indexers in
overview of
test code vs. production code
object-based collections
object.Equals method
object-relational mapping (ORM)
ObsoleteAttribute
OnPropertyChanged method
op_Addition operator
OpenWrap project
OperationCanceledException, 2nd
operations, retrying
operators
as operator
conditional ?: operator
default
equality operators
expression-bodied
inequality
is operator
lifted
null-coalescing ??
typeof.
See also bang operators; ; null conditional operators.
opt-in parameter validation
OR operator
OrderBy method
ordering
comparisons
regular equality and
structural equality and
evaluation order of pattern-based switch statements
ORM.
See object-relational mapping.
out parameters
out variables
inline variable declarations for out parameters
restrictions lifted in C# 7.3 for
out-of-process data
overload resolution
overloading
with in parameters
overview of
parallelism
parameters
in asynchronous methods
with default values
determining meaning of method calls
impact on versioning
adding overloads
default value changes
name changes
opt-in parameter validation
optional
type parameters.
See also ref parameters.
params modifier
partial methods
partial types
pass-through properties
pattern matching
opportunities for
overview of.
See also recursive pattern matching.
pattern variable scopes
pattern variables
pattern-based fixed statements
pattern-based switch statements
patterns
in C# 7.0
constant
of deconstruction
with is operator
matching properties in
omitting types from
with switch statements
evaluation order of pattern-based switch statements
guard clauses
pattern variable scopes for case labels
type
var
Paused state
pausing, 2nd
position, accessing elements by
positional arguments
pragma directives
Preconditions.CheckNotNull
predefined aliases
primary constructors
private protected, 2nd
production code vs. test code
projection initializer
properties
delegating
dereferencing
existing, deconstruction assignments to
getter/setter access for
history of
matching in patterns
pass-through.
See also automatically implemented properties.
Properties property
property declarations
PropertyChangedBase class
PropertyChangedEventArgs
PropertyChangedEventHandler
PropertyInfo, 2nd
queries, LINQ
query expressions
invocations
LINQ syntax
range variables
translating from C# to C#
transparent identifiers
Queryable class
raising events
range variables
ranges
applying
range literals
range types
RanToCompletion
readability
formatting for
suggestions for
read-only automatically implemented properties
read-only computed properties
delegating properties
pass-through properties
performing simple logic on another piece of state
read-only fields
read-only property
read-only structs
read-only variables
implicit copying with
references to
readonly
declaring structs as
modifier for structs
readonly modifier
ReadOnlyCollection
record types, 2nd
recursive pattern matching
deconstruction patterns
matching properties in patterns
omitting types from patterns
redundant copying
reevaluating expressions
reexposing methods
ref extension methods
ref features
ref keyword, 2nd
ref locals
conditional ?: operator in C# 7.2
initializing
local variables
overview of
ref fields
ref readonly in C# 7.2
ref values in C# 7.2
references to read-only variables
types
ref parameters
in C# 7.2
of enclosing methods
overview of
ref readonly
ref returns
conditional ?: operator in C# 7.2
overview of
ref readonly in C# 7.2
ref values in C# 7.2
refactoring
reference conversion
reference types, 2nd, 3rd, 4th.
See also nullable reference types.
See also nullable reference types.
See also nullable reference types.
See also nullable reference types.
ReferenceEquals
reflection
ref-like structs, in C# 7.2
IL representation of
rules for
Span
stackalloc
regular equality
regular parameters
relational operators
release builds
resolution.
See overload resolution.
resource disposal
Result property
rethrowing exception filters
retry policies
retrying operations
return statement, 2nd
return types
return values, wrapping
returning
Roslyn code analyzer, 2nd
RuntimeBinderException, 2nd, 3rd, 4th
safe awaiting
schemaless entity type
scopes
capturing variables in, 2nd
pattern variable
SecurityContext class
select clause
Select method
semantic information
separators.
See underscore separators.
serializing XML
SetException method
SetResult method, 2nd
SetStateMachine() method, 2nd, 3rd, 4th
short date
signatures.
See add signatures.
simple name
Sin method
single expressions
single value
slow path
source compatible
Span feature, 2nd
specialized collections
SqlCommand constructor
SqlException
stack trace
stackalloc, 2nd
pattern-based fixed statements in C# 7.3
with initializers in C# 7.3
StackOverflowException
Start() method, 2nd, 3rd
state, performing logic on
state machines, 2nd
boxing
structure of
statement bodies
statements.
See fixed statements, pattern-based.
static classes
static directives
extension methods and
importing static members
static members
static typing, 2nd
string class
string representations of tuples
stringArray
StringBuilder
StringCollection, 2nd
string.Format method
string.IsNullOrEmpty method, 2nd
string.IsNullOrWhiteSpace
strings
accessing identifiers with nameof
common uses of nameof
examples of
tricks when using nameof
formatting in .NET
custom formatting with format strings
localization
simple string formatting
guidelines
messages for end users
messages for other developers
handling
interpolated string literals
compiler handling of interpolated string literals
formatting strings in interpolated string literals
interpolated verbatim string literals
simple interpolations
limitations of
deferring formatting for strings
formatting for readability
limitations of interpolated string literals
localization using FormattableString
compiler handling of interpolated string literals
formatting FormattableString in specific cultures
uses for FormattableString
using FormattableString with older versions of .NET
machine-readable
strongly typed
structs
automatically implemented properties in
declaring as readonly in C# 7.2
implicit copying with read-only variables
XML serialization implicitly read-write
nongeneric ValueTuple struct
readonly modifer for.
See also ref-like structs, in C# 7.2.
structural equality
stub method, 2nd
Substring method, 2nd
switch expressions
switch statements, 2nd
pattern-based
patterns with
guard clauses
pattern variable scopes for case labels
synchronization contexts
SynchronizationContext class
synchronous code
SynonymInfo indexer
System.Collections.CollectionBase class
System.Collections.Generic
System.ComponentModel namespace
System.Diagnostics.StackTrace
System.Linq namespace
System.Linq.Enumerable class, 2nd
System.Linq.Expressions namespace
System.Linq.Queryable class
System.Object.ToString() method
System.Runtime.CompilerServices namespace, 2nd, 3rd, 4th, 5th, 6th
System.Runtime.CompilerServices.AsyncMethodBuilderAttribute
System.Runtime.CompilerServices.FormattableStringFactory class
System.Runtime.CompilerServices.Unsafe package
System.Runtime.INotifyCompletion interface
System.Runtime.InteropServices namespace
System.Threading.Tasks.Extensions package
System.Tuple
System.TupleExtensions class
System.ValueTuple
target-typed new
Task class
Task Parallel Library (TPL), 2nd
Task property
task types
in C# 7
building
ValueTask
custom
TaskAwaiter
task-based asynchronous pattern
TaskCanceledException
Task.ConfigureAwait
Task.Delay, 2nd
Task.FromCanceled
Task.FromException
Task.FromResult, 2nd, 3rd
Task.Result
Task.Result property
Task.Wait() method, 2nd
Task.WhenAll() method
Task.Yield() method
test code vs. production code
TestCaseSource attribute
testing asynchrony
this keyword, 2nd
ThreadAbortException
throw expressions
throw statement, 2nd
ThrowIfCancellationRequested
Title property
tokens
ToList() method
ToString() method, 2nd, 3rd, 4th, 5th
ToString(IFormatProvider) method, 2nd
ToString(string, IFormatProvider) method
TPL.
See Task Parallel Library.
trampoline technique
translating query expressions
transparent identifiers
true operator
Try .NET
try block
try statement
TryAdd method
try/catch block
try/finally blocks
TryGetNext method, 2nd
Tuple class, 2nd
tuple expression
tuple literals
conversions
conversions to tuples types from
explicit conversions
implicit conversions
deconstruction
inferred element names for in C# 7.1
syntax
types of
tuple types
conversions between
generic variance conversions
tuple type identity conversions
conversions from tuple literals
element name checking in inheritance
equality operators in C# 7.3
inequality operators in C# 7.3
syntax
Tuple<,> class
TupleElementNamesAttribute
tuples, 2nd
alternatives to
anonymous types
named types
System.Tuple
as bags of variables
accessing elements by name
accessing elements by position
in CLR
element name handling
extension methods
nongeneric ValueTuple struct
regular equality and ordering comparisons
string representations of tuples
structural equality and ordering comparisons
System.ValueTuple
womples
conversions
element name checking in inheritance
equality operators in C# 7.3
inequality operators in C# 7.3
uses of
deconstruction of
dynamic binder and
element names
high element numbers
fields
implementing conversions
large
local variables
nonpublic APIs
overview of
as single value
two-pass exception model
type arguments
to methods
overview of
type classes, 2nd
type constraints
generic
overview of
type inference
Type Library Importer tool (tlbimp)
type parameters
type patterns
typeof operator, 2nd, 3rd
types, 2nd
arrays
compiler-generated
exceptions
indexes
named
omitting from patterns
range
record
reference
referring to members of
return
static.
See also anonymous types; ; generic types; ; nontuple types, deconstruction of; ; nullable reference types; ; nullable value types;
; partial types; ; task types; ; tuple types.
type-to-type conversion
typing
explicit
static
terminology of.
See also dynamic typing; implicit typing.
unary operator, 2nd
underlying type
underscore separators
unit-test frameworks
Unity
Universal Windows Applications (UWA/UWP)
unmanaged constraint
UnmanagedType enum
unnamed arguments
unsafe awaiting
unspeakable names, 2nd
unwrapping exceptions
users.
See end users.
using await statement
using statement, 2nd
using static directive, 2nd, 3rd, 4th
UWA/UWP.
See Universal Windows Applications.
validation
arguments, 2nd
iterator/async arguments.
See also opt-in parameter validation.
Value property
value types, 2nd.
See also nullable value types.
See also nullable value types.
values
ref values in C# 7.2
tuples as single values
wrapping return values.
See also default values; ; dynamic values.
ValueTask
ValueTuple constructor
ValueTuple struct, nongeneric
ValueTuple types
var keyword, 2nd
var pattern
variable declarations
variables
captured
capturing
from multiple scopes
implementing with generated class
in foreach loops
in scopes
existing, deconstruction assignments to
within local methods
capturing ref parameters of enclosing methods
declaring local method after declaring captured variables
local methods and read-only fields
local methods interacting with definite assignment
new, deconstruction to
range
tuples as bags of
accessing elements by name
accessing elements by position.
See local variables; ; out variables.
variance
conversions
in delegate declarations
in interface declarations
restrictions on using.
See also generic variance.
VARIANT type
versioning, impact of parameters on
adding overloads
default value changes
parameter name changes
void method, 2nd, 3rd, 4th
Wait() method, 2nd, 3rd
WaitForNextAsync method, 2nd
weakly typed
WebAssembly
WebClient, 2nd
WebClient.DownloadStringAsync method
WebException, 2nd
WebRequest
WhenAll() method
where clause
Where method
Windows Forms
Windows Presentation Foundation (WPF)
Windows Runtime platform (WinRT)
womples
wrapping return values
Xamarin Forms
XElement, 2nd
XML serialization
XNamespace
yield statements, 2nd, 3rd, 4th, 5th
yield type
Yield() method
YieldAwaitable