Skip to main content
00:00/00:00
Lecture 69 of 146

Checking for Null in C

Download Course (Free)

Course Content

0 / 146 completed
Section 1: Course Curriculum146 videos

Overview

3m

Working on legacy projects

2m

The compilation pipeline

3m

Who is this course for and prerequisites

6m

Welcome

5m

What will you learn in this course

12m

Multi-targeting

2m

Adding multi-targeting

3m

What is target framework moniker (TFM)

3m

Using init-only and required properties in .NET Framework

4m

C Language version vs. Target framework

8m

Compiler language specific types

5m

PolySharp- source-only polyfills for C Language

3m

Using PolySharp for init-only and required properties

2m

Choosing the right C Language version

2m

'latest' vs. specific C Language version

7m

Conclusion

3m

Overview 2

3m

Using Directory.Build.props

9m

Module Overview

10m

Storage Model- Inline vs. Indirection

7m

Exploring Storage

3m

Analyzing Storage Model with Benchmarks

6m

Inspecting Type Layout (part 2)

3m

Exploring Access Patterns with Benchmarks

3m

Copy Semantics- Assignment

4m

Analyzing Access Patterns Benchmark Results

10m

Copy Semantics- Parameter Passing

9m

Equality Semantics

4m

Summary

6m

Overview 3

2m

Object Initialization

1m

Analyzing Object Construction Order

4m

Using Analyzers to Avoid Making Virtual Calls in Base Constructors

1m

A Custom Factory Method and Error Handling

2m

Virtual Calls in the Base class Constructor

4m

Exploring a Custom Factory Method Behavior at Runtime

4m

Benchmarking the new() Constraint

6m

Overview 4

3m

The Readonly Field Trap

1m

Conclusion 2

5m

Boxing and Indexers

1m

Exploring Different Kind of Copies

4m

Why the Compiler Makes a Copy

3m

Defensive Copy Overview

3m

Manual Value-based Equality

1m

Overview 5

2m

How to Avoid Defensive Copies for Structs

7m

Conclusion 3

6m

Referential and Value-based Equality

4m

Records Under the Hood

4m

Issues With the Default Structs Equality

4m

Overview 6

2m

Records Limitations

4m

Record Structs vs. Default Structs

7m

System.Tuple vs. System.ValueTuple

3m

Knowing the Limits- When to Move to Actual Types

2m

Union Types- Why Do We Need Them

3m

Union Types- the Basics

6m

Union Types Under the Hood

3m

Tuples in C

6m

Overview 7

1m

UnionTypes - Recap

3m

Section Overview

3m

Argument Validation and Nullable Reference Types

4m

Conclusion 4

9m

Union Types- the Deep Dive

9m

Argument Null Checks in C

2m

Checking for Null in C

3mNow Playing

Implementing Custom String Validation

1m

Recreating ThrowIfNull Manually

4m

Issues With Nullable Strings in .NET Framework

2m

Analyzing ThrowIfNull Boxing Allocations

4m

Overview 8

3m

Summary 2

3m

The issue with Multi-Targeting

3m

Refactoring to Extension Everything

4m

Extension Methods

5m

Creating Polyfills for Argument Validation

6m

Overview 9

2m

Summary 3

2m

Lambdas Are Ubiquitous

2m

Extending the C Language

4m

Lambdas Under the Hood

6m

Benchmarking Lambda Expressions

6m

NET 10 Delegate De-Abstraction

2m

Profiling Closure Allocations

5m

Method Group Conversion vs. Lambda Expressions

1m

Issues With Capturing Loop Variables

4m

Scope-based Code Generation for Lambda Expressions

4m

Method Group Conversion vs. Lambda Expressions in Action

3m

Overview 10

1m

Exploring Pattern Matching Variety

3m

Imperative vs. Declarative Code

3m

Pattern Matching Exhaustiveness

2m

Recursive Patterns Explained

3m

Two Dimensions of Pattern Matching

3m

Exhaustiveness Checks in Action

4m

Open and Closed Hierarchies

2m

Exhaustiveness Checks for Classes and Unions

4m

Know When to Stop

3m

Section Overview 2

2m

Iterator Design Pattern in C

2m

Overview 11

1m

The Cost of Boxed Iterators

3m

Foreach Under the Hood

3m

Foreach and IEnumerable

3m

Iterator as a State Machine

3m

Enumerable De-Abstraction in .NET 10

5m

Iterator as a Mutable Struct

1m

Overview 12

1m

Manual Iterator Implementation

1m

Summary 4

5m

Refactor To Use Iterator Blocks

3m

Iterator Block Execution Semantics

3m

Lowered C Code for Generated State Machines

2m

State Machine Under the Hood

4m

Benchmarking State Machine Allocations

5m

State Machine Allocations

6m

Resources in Iterator Blocks

2m

De-Abstracting Iterator Blocks in .NET 10

4m

Error Handling in Iterator Block

2m

Overview 13

2m

Two Syntaxes, One Model

1m

Query Comprehensions vs. Method Calls

7m

What Is IEnumerable-T-

2m

Multiple Enumerations with IEnumerable-T-

6m

Overview 14

2m

LINQ Deferred Execution Model

8m

Using Static Analysis to Avoid Multiple Enumerations

3m

Summary 5

10m

LINQ Performance Reputation

2m

Analyzing Enumerable.Any Performance

2m

LINQ vs. Manual Loop Performance Analysis

5m

Mastering LINQ Performance

3m

Performance Optimization Loop

4m

Spanification in LINQ

2m

LINQ Performance Improvements in .NET 10

2m

Iterator Fast Path Overrides

4m

LINQ Performance Optimization Patterns

3m

Iterator Fusion

6m

Type-based Specialization

8m

For loop vs. Enumerable.SequenceEquals

5m

Vectorization in .NET Framework

8m

Conclusion 5

13m

Summary 6

16m