Skip to content
Free public beta until December 4, 2026: every course is open, no card needed. After that, the first chapter of each course stays free and full access is a one-time $39 ($19 for up to 100 founding members chosen for helpful feedback). Your progress is kept. How the beta works

Glossary

Every defined term in this course, A–Z.

.csproj file

Read the section →

The small XML file that describes one C# project and how to build it.

A file listing what Git should never track, such as bin/ and obj/.

.NET Framework

Read the section →

The older, Windows-only .NET, now in maintenance only.

.NET runtime

Read the section →

The software that loads and runs a built .NET program.

The toolkit for building .NET programs: compiler, build system, CLI, and templates.

.NET Standard

Read the section →

A historical spec that let one library run on both .NET Framework and modern .NET.

The single zip file a NuGet package ships as.

abstract class

Read the section →

A class you can't create directly; it exists to be derived from.

access modifier

Read the section →

A keyword like private or public that says who can use a member.

AggregateException

Read the section →

One exception that holds several others inside it.

AI coding assistant

Read the section →

A tool built on a language model that suggests, explains or writes code for you.

Asking for a new piece of heap memory, which the garbage collector must later clean up.

Amdahl's law

Read the section →

The part of a job that can't be split up limits how much faster more cores can make it.

anonymous type

Read the section →

A quick unnamed object like new { Name, Total }, made on the spot.

The text after a command's name that says what to act on.

Arrange, Act, Assert

Read the section →

Set things up, do the one thing being tested, then check the result.

A fixed-size row of values of one type, numbered from 0.

The .dll file a .NET build produces: IL plus metadata.

The line in a test that checks the result and fails the test if it's wrong.

async stream

Read the section →

A sequence whose items arrive over time, each one awaited as it comes.

asynchronous

Read the section →

Starting a slow job and getting on with other things until it finishes.

atomic operation

Read the section →

A step that happens all at once, so no other thread can see it half done.

attribute target

Read the section →

The thing an attribute is attached to, which a prefix like return: or assembly: can change.

authentication

Read the section →

Checking who someone is.

authorization

Read the section →

Checking what someone who has signed in is allowed to do.

Pause this method until the task finishes, without holding up the thread.

back-pressure

Read the section →

A full queue making a fast producer wait for a slower consumer.

base class library

Read the section →

The large set of ready-made types that ships with .NET.

A careful, repeated measurement of how fast some code runs and how much memory it uses.

bitwise operator

Read the section →

An operator that works on the individual bits of a number.

Having the same bytes in C# and in native code, so it crosses without conversion.

A thread standing still, doing nothing, while it waits for something.

A true-or-false value.

Wrapping a value type in an object on the heap.

branch protection

Read the section →

Repository rules that stop anyone merging to main until reviews and CI checks pass.

A marker that pauses the program at a line so you can look around.

build configuration

Read the section →

A named set of build settings, usually Debug for developing and Release for shipping.

The stack of method calls that haven't finished yet.

A method you hand to other code so it can call you back.

caller information attribute

Read the section →

A tag on an optional parameter that makes the compiler fill in a fact about where the call was written.

CancellationToken

Read the section →

A signal you pass along so a long job can be told to stop early.

captive dependency

Read the section →

A long-lived object holding on to a short-lived one, so it outlives its time.

case-sensitive

Read the section →

Capital and small letters count as different.

Writing (type)value to force a conversion that might lose information.

central package management

Read the section →

Keeping every package version for a whole solution in one file.

change tracking

Read the section →

EF Core remembering which loaded objects you changed, so it knows what to save.

A thread-safe queue where some code puts items in and other code takes them out.

A single character, written in single quotes.

checked operator

Read the section →

A second version of an operator that runs inside checked(...) and should throw on overflow.

A blueprint for objects: the data they hold and what they can do.

class library

Read the section →

A project that builds reusable code into a .dll other projects can use.

A lambda that remembers variables from around it.

code analyzer

Read the section →

A tool built into the compiler that points out likely bugs and style problems as warnings.

code coverage

Read the section →

How much of your code the tests actually ran.

code review

Read the section →

A teammate reading your changes before they're merged, to catch mistakes and share knowledge.

A sign in the code that something may be badly organized, like a very long method.

coding agent

Read the section →

An AI tool that edits files and runs commands such as build and test for you.

collection expression

Read the section →

Square-bracket syntax for building a collection: [1, 2, 3].

command injection

Read the section →

Tricking a program into running extra operating-system commands by hiding them in its input.

Text in code the compiler ignores, written for people.

compile error

Read the section →

A mistake the compiler refuses to build.

A program that translates source code into another form ahead of running it.

composition

Read the section →

Building an object out of other objects instead of inheriting.

composition root

Read the section →

The one place near a program's start where its objects are created and connected.

compound assignment

Read the section →

A shortcut like += that updates a variable.

concurrency

Read the section →

Several jobs in progress over the same stretch of time.

A true-or-false expression that decides which code runs.

conditional breakpoint

Read the section →

A breakpoint that only pauses when a condition you give is true.

conditional operator

Read the section →

condition ? a : b: a one-line if/else that produces a value.

configuration

Read the section →

Settings your program reads at startup instead of having them written into the code.

connection string

Read the section →

The text that tells a program which database to open and how to log in.

A named value that can never change.

constructed type

Read the section →

A generic type with its type arguments filled in, like List.

constructor

Read the section →

Code that runs when an object is created, to set it up.

consume-once rule

Read the section →

A ValueTask may be awaited only once; call AsTask() if you need more.

container image

Read the section →

A packaged, runnable snapshot of an app plus the operating-system files it needs.

continuous integration

Read the section →

Having a server build and test every change automatically, so breakage shows up right away.

A class grouping related API actions, the older and still common way to build APIs.

critical section

Read the section →

The lines inside a lock, run by one thread at a time.

cross-site scripting

Read the section →

Getting a web page to run an attacker's script by sneaking it into content the page displays.

A text file of rows, with the values in each row separated by commas.

The language-and-region settings that decide things like the decimal separator.

custom attribute

Read the section →

Your own attribute: a class that derives from Attribute, used as a tag in square brackets.

database provider

Read the section →

The package that lets EF Core talk to one kind of database, such as SQLite or SQL Server.

daylight saving time

Read the section →

Moving clocks forward in spring and back in autumn, which makes some local times skip or repeat.

The EF Core object that is your session with the database.

Two threads each waiting forever for something the other one holds.

A tool that pauses a running program so you can look inside it.

A number type that stores base-10 digits exactly, used for money.

deconstruction

Read the section →

Unpacking a tuple or record into separate variables.

A wrapper that adds behavior to an object while looking like the same kind of object.

default interface method

Read the section →

An interface member with a body that implementers inherit unless they write their own.

deferred execution

Read the section →

A query that waits to run until you actually loop over its results.

definition of done

Read the section →

The checklist a piece of work must pass before you call it finished.

A variable that holds a method you can call later.

dependency injection

Read the section →

Handing a class what it depends on from outside, usually through its constructor.

dependency inversion

Read the section →

Depend on an interface, not on a specific class.

design pattern

Read the section →

A named, reusable shape of solution to a problem that keeps coming up in code.

diagnostic ID

Read the section →

The code, like CS0103, that names a compiler error or warning.

Dictionary<TKey, TValue>

Read the section →

A lookup table from keys to values.

Directory.Build.props

Read the section →

A file whose settings apply to every project in the folders below it.

document database

Read the section →

A database that stores whole JSON-like documents instead of rows in tables.

The dotnet command you type in a terminal to create, build, run, test, and publish.

C#'s everyday number type for values with fractions.

DRY, KISS and YAGNI

Read the section →

Three rules of thumb: don't repeat knowledge, keep it simple, and don't build what you don't need yet.

A plain object shaped for data crossing a boundary, like an API response.

A saved snapshot of a running program's memory, for study later.

A type that skips compile-time checking; errors show up only when running.

EditorConfig

Read the section →

A settings file that tells every editor and the build how your code should be formatted and styled.

encapsulation

Read the section →

Hiding an object's data so it can only change in allowed ways.

The rule for turning characters into bytes and back.

end of support

Read the section →

The date a .NET release stops getting any fixes, including security fixes.

One address plus method your API answers, like GET /orders/5.

A C# class whose objects are stored as rows in a table.

A type with a fixed set of named values.

equality contract

Read the section →

The rule that ==, !=, both Equals methods and GetHashCode must all agree about what equal means.

A way for an object to notify others when something happens.

An object that says "this operation failed", thrown to stop normal flow.

exception filter

Read the section →

An extra condition on a catch, written with when, that must be true to catch.

Covering every possible input.

explicit interface implementation

Read the section →

A member written as IName.Member, reachable only through that interface.

A piece of code that produces a value.

The dot-and-letters ending of a file name, like .cs.

extension member

Read the section →

A property, static member, operator or method added to a type from outside it, in a C# 14 extension block.

extension method

Read the section →

A static method you can call with a dot, as if a type you don't own had it.

A method or object whose job is to create other objects, hiding the details of how.

fast-forward

Read the section →

A merge where Git just slides the branch pointer forward because nothing else changed.

feature band

Read the section →

The hundreds digit of an SDK version: a batch of SDK tooling on the same runtime.

A variable that belongs to an object or class.

file-based app

Read the section →

A C# program that is just one .cs file, run with dotnet run app.cs.

file-local type

Read the section →

A type marked file, usable only inside the one source file that declares it.

file-scoped namespace

Read the section →

A namespace declaration ending in a semicolon that covers the whole file.

A cleanup method the garbage collector may run some time after an object becomes unreachable.

finally block

Read the section →

Cleanup code that runs whether the try part worked or failed.

first-chance exception

Read the section →

The moment an exception is thrown, before any catch sees it.

A test that sometimes passes and sometimes fails with no code change.

A container for files and other folders.

A loop that visits each item in a collection once.

format string

Read the section →

A code like C2 or N0 that says how to display a number or date.

fragile base class

Read the section →

A base-class change that breaks derived classes nobody touched.

framework-dependent deployment

Read the section →

A published app that relies on .NET already being installed; self-contained brings its own copy.

Func and Action

Read the section →

Built-in delegate types: Func returns a value, Action doesn't.

function pointer

Read the section →

The address of a static method, called like a method but with no delegate object.

garbage collector

Read the section →

The part of .NET that frees memory used by objects nothing can reach any more.

generic attribute

Read the section →

An attribute class with a type parameter, so the type it names is checked like any generic.

generic constraint

Read the section →

A rule limiting which types a type parameter accepts.

generic host

Read the section →

The standard .NET app shell that sets up services, settings, logging and shutdown for you.

generic type

Read the section →

A type with a slot for another type, like List<int>.

A tool that records snapshots of your project so you can go back and see what changed.

A separate line of commits in Git where you can work without disturbing the main code.

guard clause

Read the section →

A check at the top of a method that throws if an argument is bad.

hallucination

Read the section →

When an AI states something false with confidence, such as a method that doesn't exist.

A collection of unique items with fast membership tests.

A named piece of extra information sent with a request or response.

The memory area where objects live until nothing refers to them.

hosted service

Read the section →

A class the host starts with the program and stops on shutdown.

The code that runs so often that its speed decides the speed of the whole program.

Applying code edits to a program while it keeps running.

The language browsers and programs use to ask servers for things over the web.

The .NET class your program uses to send web requests and read the replies.

IAsyncDisposable

Read the section →

Like IDisposable, but the cleanup itself is awaited.

An editor with building, running, and debugging built in.

Safe to repeat: sending it twice ends the same as sending it once.

IDisposable

Read the section →

The interface for objects that hold something you must give back, like an open file.

IEnumerable<T>

Read the section →

The interface for anything you can loop over with foreach.

The in-between language the C# compiler produces.

immediate execution

Read the section →

A query call that does its work right away and gives you the answer.

Immediate window

Read the section →

A debugger panel where you type C# while paused and see the result.

Can't be changed after it's created.

immutable collection

Read the section →

A collection that can't be changed; "changes" produce a new one.

implicit conversion

Read the section →

A type change C# makes for you because nothing can be lost.

increment operator

Read the section →

++ adds one to a variable; -- subtracts one.

incremental generator

Read the section →

A source generator written as a cached pipeline, so the editor only redoes work when something relevant changed.

The position number of an item; the first is 0.

index from end

Read the section →

^1 means the last item, ^2 the one before it.

A member that lets code use an object with square brackets, like obj[2] or obj["key"].

infinite loop

Read the section →

A loop whose condition never becomes false.

inheritance

Read the section →

Building a new class on top of an existing one.

init accessor

Read the section →

A property that can be set only while the object is being created.

inline array

Read the section →

A fixed number of values stored right inside a struct, with no separate array object.

inner exception

Read the section →

The original exception kept inside a newer one that wraps it.

input validation

Read the section →

Checking input before trusting it.

C#'s everyday whole-number type.

integer division

Read the section →

Dividing two whole numbers, which drops the fraction.

integration test

Read the section →

A test that checks several real parts working together, like code plus a real file.

interceptor

Read the section →

Generated code that replaces one specific method call in your program with a different method.

A list of members a type promises to provide.

A rule about an object's data that must always stay true.

IQueryable<T>

Read the section →

A query that gets translated into another language, like SQL, instead of run in memory.

The standard date format that looks like 2026-09-26T14:30:00Z.

A method that hands back items one at a time, pausing between them.

JIT compiler

Read the section →

The part of the runtime that turns IL into machine code while the program runs.

A text format for data made of objects, lists, strings, numbers, true/false and null.

A signed token a client sends with each request to prove who it is.

lambda expression

Read the section →

A short inline method, like x => x * 2.

language version

Read the section →

Which edition of the C# language the compiler accepts for your project.

large language model

Read the section →

A program trained on huge amounts of text that predicts plausible next words; it can sound sure and still be wrong.

layered architecture

Read the section →

Splitting an app into layers, such as business rules, use cases and databases, with rules about which may use which.

C#'s built-in way to filter, sort, group and total any collection.

LINQ provider

Read the section →

The part of an IQueryable that reads the query's expression tree and turns it into another language, like SQL.

list pattern

Read the section →

A pattern that matches a sequence's elements, like [1, .., 9].

A resizable list that keeps items in order.

A value written directly in code, like 42 or "hi".

local function

Read the section →

A method declared inside another method.

A rule that lets only one thread at a time run a piece of code.

A file recording the exact package versions used, so every build gets the same ones.

logic error

Read the section →

The program runs but does the wrong thing.

A breakpoint that writes a message instead of pausing.

Code that repeats.

A long-term-support .NET release, supported for three years.

machine code

Read the section →

The numeric instructions a processor actually executes.

marker attribute

Read the section →

An attribute with no behavior of its own, used only to mark code for a generator or tool to find.

marshalling

Read the section →

Converting a value between its C# form and the form native code expects.

A go-between that routes requests to the code that handles them, so senders and handlers don't know each other.

A reflection object that describes one member of a type, such as a property or a method.

A span-like window that can be stored in fields and kept across an await.

merge conflict

Read the section →

What happens when two branches changed the same lines and Git can't decide which to keep.

A named block of code you can call, optionally with inputs and a result.

A step every request passes through, in order, like logging or checking who's calling.

A saved step that changes the database's tables to match your updated classes.

minimal API

Read the section →

A web API written as a few lines mapping addresses straight to C# functions.

minimal reproduction

Read the section →

The smallest program that still shows a bug, with made-up data.

A stand-in object used in a test in place of the real thing.

modern .NET

Read the section →

The current, cross-platform .NET (currently .NET 10).

modular monolith

Read the section →

One deployable app split inside into well-separated modules.

module initializer

Read the section →

A method the runtime calls by itself, once, before any other code in its assembly runs.

The build engine that reads project files and turns them into a program.

MSBuild item

Read the section →

An entry in a list in a project file, such as a source file or a package.

MSBuild property

Read the section →

A named setting in a project file, like the target framework.

MSBuild target

Read the section →

A named step of a build, like Restore or Build, made of smaller tasks.

multicast delegate

Read the section →

One delegate holding several methods, run in order.

mutation testing

Read the section →

Breaking the code on purpose to check that your tests notice.

A name that groups related types, like a folder for code.

Compiling an app straight to machine code before it ships, so it needs no JIT and starts fast.

natural type

Read the section →

The delegate type a lambda gets on its own, so var can hold it.

Newtonsoft.Json

Read the section →

A popular older JSON library you'll see in a lot of existing code.

Something a version deliberately won't do, written down so nobody builds it.

NuGet audit

Read the section →

Restore's automatic check for packages with known security problems.

NuGet package

Read the section →

A downloadable bundle of someone else's assemblies you can add to a project.

The value meaning "no object here".

null-coalescing operator

Read the section →

a ?? b: use a, or b if a is null.

null-forgiving operator

Read the section →

A ! after an expression that tells the compiler "trust me, it isn't null".

null-state analysis

Read the section →

The compiler tracking whether each reference might be null at each point.

nullable annotation

Read the section →

A ? after a type, like string?, meaning the value may be null.

nullable value type

Read the section →

A value type that can also be null, like int?.

NullReferenceException

Read the section →

The crash you get when you use a reference that points to nothing.

One thing built from a class, with its own data.

object initializer

Read the section →

Setting properties right after new, inside braces.

observer pattern

Read the section →

An object tells a list of listeners when something happens.

off-by-one error

Read the section →

A loop that runs one pass too many or too few.

How far a local clock is ahead of or behind UTC, like -05:00.

A standard machine-readable description of an API's addresses, inputs and outputs.

A symbol like +, ==, or && that combines values.

operator interface

Read the section →

A System.Numerics interface promising one operator, such as + or <, for use in a generic constraint.

operator overloading

Read the section →

Writing a method that says what a symbol like + or == means for your own type.

optimistic concurrency

Read the section →

Letting people edit freely, then refusing a save if someone else changed the row first.

options pattern

Read the section →

Reading a group of settings into a small class your code asks for.

ordinal comparison

Read the section →

Comparing strings character code by character code, ignoring language rules.

A library that lets you work with database rows as ordinary C# objects.

over-posting

Read the section →

When a client sets fields it shouldn't, because the API bound its input straight onto an entity.

A result too big (or too small) for its type.

overloading

Read the section →

Several methods sharing a name but taking different parameters.

How C# calls a function exported by a native library, such as the OS's C library.

package source

Read the section →

A place packages are downloaded from, like nuget.org or a company server.

packages.config

Read the section →

The old way .NET Framework projects listed their NuGet packages, in a separate file.

parallelism

Read the section →

Jobs literally running at the same instant on different processor cores.

A named input a method declares.

parameter binding

Read the section →

How ASP.NET Core fills your handler's parameters from the address, query string, headers and body.

parameterized query

Read the section →

A query where values are sent separately from the SQL, never pasted into it.

parameterized test

Read the section →

One test method run many times with different inputs.

A program that reads code's structure without running it.

Reading text and turning it into a value such as a number.

partial class

Read the section →

A class whose code is split across several files.

partial member

Read the section →

A member declared in one part of a partial class and implemented in another.

password hashing

Read the section →

Storing a scrambled, one-way version of a password instead of the password itself.

The address of a file or folder.

A test a value can match, like > 10 or "quit".

Stopping the garbage collector from moving an object while code holds its address.

pointer type

Read the section →

A type such as int* that holds a memory address.

polymorphism

Read the section →

One call, different behavior depending on the object's real type.

The rules for which operators group first.

premature optimization

Read the section →

Making code faster before you know it is slow, usually at the cost of clarity.

preview feature

Read the section →

A feature that ships early for trying out and may still change before release.

primary constructor

Read the section →

Constructor parameters written right after the type name.

primary key

Read the section →

The column that uniquely names each row; a foreign key points at another table's primary key.

primitive obsession

Read the section →

Using a bare int or string for a value that has its own meaning, like an order ID.

PriorityQueue<TElement, TPriority>

Read the section →

A queue that always hands out the most urgent item next.

ProblemDetails

Read the section →

A standard JSON shape for describing what went wrong in an API request.

A tool that watches a running program and reports where its time and memory go.

A set of instructions a computer can carry out.

programming language

Read the section →

A precise notation for writing instructions a computer can carry out.

A folder with a .csproj file describing one program or library to build.

project reference

Read the section →

A line in one project that says "I use the code in that other project".

Turning each item into something else, like picking one field.

A member that looks like a field but runs code when read or written.

property pattern

Read the section →

A pattern that checks an object's properties, like { Age: >= 18 }.

Preparing the exact set of files you copy to another machine to run your app.

publish profile

Read the section →

A saved set of publish settings you can reuse instead of typing options each time.

pull request

Read the section →

A request to merge your branch into the main code, where teammates review the changes first.

query provider

Read the section →

The part of a library that turns a LINQ query into something else, such as SQL.

query syntax

Read the section →

The from ... where ... select way of writing a LINQ query.

First in, first out: like a line at a counter.

race condition

Read the section →

A bug where the result depends on which thread happens to get there first.

raw string literal

Read the section →

Text in triple quotes where backslashes and quotes need no escaping.

Still findable by following references from something the program is using.

A type built for holding data, with value-based equality.

A method calling itself on a smaller version of the problem.

A field in a ref struct that is another name for someone else's variable.

A local variable that is another name for existing storage, not a box of its own.

ref parameter

Read the section →

A parameter that is an alias for the caller's variable.

ref readonly return

Read the section →

A reference you may read through but not write through.

A method that hands back a reference to storage instead of a copy of its value.

A struct that may live only on the stack, like Span.

refactoring

Read the section →

Changing how code is organized without changing what it does.

reference equality

Read the section →

Two references are equal only if they point at the same object.

reference type

Read the section →

A type whose variables hold a reference to an object, not the object itself.

regression test

Read the section →

A test written for a bug you fixed, so it can't quietly come back.

regular expression

Read the section →

A pattern for matching text, like "three digits then a dash".

relational database

Read the section →

A database that stores data in tables of rows and columns, linked by keys.

relational pattern

Read the section →

A pattern that compares, like > 10.

An object that stores and fetches your domain objects so the rest of the code doesn't talk to the database directly.

Making calls survive brief failures, with timeouts, retries and backing off.

A common style for web APIs: resources at addresses, changed with standard HTTP methods.

Downloading the packages a project needs before it can build.

return value

Read the section →

The result a method hands back.

run-time error

Read the section →

A failure that happens while the program is running.

runtime identifier

Read the section →

A short name for an operating system and processor, like win-x64 or osx-arm64.

A class that owns a native handle and releases it exactly once.

saturating conversion

Read the section →

A number conversion that clamps a value to the nearest end of the target type's range.

scoped modifier

Read the section →

A promise that a ref or span parameter or local never leaves its method.

A class or override that can't be extended further.

A password, key or token that grants access and must never be written into code.

semantic versioning

Read the section →

Version numbers like 2.4.1 where each part says how big the change was.

Anything you can walk through one item at a time with foreach.

serialization

Read the section →

Turning an object into text or bytes you can save or send, and back again.

service container

Read the section →

The part of .NET that creates your objects and hands each one what it needs.

service lifetime

Read the section →

How long the container keeps reusing one object: never, per request, or forever.

service locator

Read the section →

A class that fetches what it needs from the container itself, hiding its real needs.

short-circuit evaluation

Read the section →

Stopping as soon as the answer is known, so the right side may not run.

single-file app

Read the section →

An app published as one executable file instead of a folder of files.

Five design guidelines for classes that are easy to change and test.

A file grouping several related projects so they can be opened and built together.

sorted collection

Read the section →

A set or dictionary that keeps its items in order automatically.

source code

Read the section →

The text of a program, written by a person in a programming language.

source generation

Read the section →

The compiler writing extra code for you while it builds your program.

A window onto part of an array or other memory, without copying it.

The language for asking a relational database to find and change data.

SQL injection

Read the section →

An attack where user input is pasted into SQL and changes what the query does.

stack trace

Read the section →

The list of method calls that were in progress when an error happened.

Last in, first out: like a stack of plates.

One complete instruction, usually ending in a semicolon.

static abstract member

Read the section →

A static member every implementing type must supply; the basis of generic math.

static member

Read the section →

A member that belongs to the class itself, not to any one object.

static virtual member

Read the section →

A static interface member with a default body that each implementing type may replace.

status code

Read the section →

The three-digit number in a response saying how the request went, like 200 or 404.

Running a paused program one line or one call at a time.

strategy pattern

Read the section →

Swapping in different behavior by passing a different object that implements the same interface.

A pipe of bytes you read from or write to a piece at a time.

A piece of text.

string interpolation

Read the section →

Putting values straight into text with $"…{value}…".

StringBuilder

Read the section →

A changeable text buffer for building a string in many steps.

strongly typed ID

Read the section →

A tiny wrapper type for one kind of ID, so different kinds can't be mixed up.

A small value type you define yourself.

structured logging

Read the section →

Logging named values, not just text, so logs can be searched and filtered.

switch expression

Read the section →

A compact way to pick a value by matching cases: x switch { … }.

An object standing for work that may not have finished yet.

A window where you type commands instead of clicking.

test double

Read the section →

A stand-in implementation that a test controls, such as a fake clock.

test fixture

Read the section →

Shared setup that several tests in a class reuse.

test runner

Read the section →

The program that finds your tests, runs them and reports what passed.

One line of work the computer runs; a program can have several at once.

thread pool

Read the section →

A shared set of ready-made threads that tasks borrow and give back.

A region's clock rules, including when daylight saving starts and ends.

tool manifest

Read the section →

A file that pins the .NET command-line tools a repository uses, so everyone gets the same versions.

trace table

Read the section →

A table of each variable's value at each step of a program.

transaction

Read the section →

A group of database changes that all happen or none of them do.

transitive dependency

Read the section →

A package you get because a package you added needs it.

TreatWarningsAsErrors

Read the section →

A build setting that makes any warning fail the build, so none are ignored.

Cutting unused code out of a self-contained app so it ships smaller.

Try pattern

Read the section →

A method that returns true or false for success and hands the result back through out.

Code that says "try this, and if that kind of failure happens, do this instead".

A method that tries to parse text and tells you whether it worked, instead of crashing.

A quick bundle of a few values, like (name, score).

The kind of value a variable holds, which decides what you can do with it.

type inference

Read the section →

The compiler working out type arguments from the values you pass.

type parameter

Read the section →

The placeholder T in a generic type or method.

type pattern

Read the section →

A pattern that tests a value's type, like is string s.

typed client

Read the section →

A class that wraps one web API, given a ready-made HttpClient by the container.

UML class diagram

Read the section →

A box-and-arrow picture of classes and how they relate.

unbound generic type

Read the section →

A generic type written with empty angle brackets, such as List<>.

unhandled exception

Read the section →

An exception nobody catches; it ends the program with an error report.

unit of work

Read the section →

An object that collects changes and saves them all together, or not at all.

A small automatic check that one piece of code does what it should.

unmanaged type

Read the section →

A value type made only of plain bytes, with no references inside at any depth.

unsafe code

Read the section →

Code in a marked region where C# stops checking memory access, so pointers are allowed.

untrusted input

Read the section →

Any data that comes from outside your program and could have been written by an attacker.

user secrets

Read the section →

A private settings file on your own machine for passwords and keys while developing.

One thing one kind of user wants, written from their side.

user-defined conversion

Read the section →

A method that lets your type turn into another type, with or without a cast.

using alias

Read the section →

A using line that gives a type a second, shorter name in one file.

using directive

Read the section →

A line that lets you use a namespace's types without typing its full name.

using statement

Read the section →

A way to make sure a file or other resource gets closed when you're done.

The one world clock that doesn't change with location or daylight saving.

UTF-8 string literal

Read the section →

A string literal with a u8 suffix, giving its UTF-8 bytes instead of text.

value object

Read the section →

A small type defined by its data and rules, like an Email that checks its text.

A type whose variables hold the data itself, copied on assignment.

A keyword that lets the compiler work out a variable's type from its starting value.

A named place that holds a value of one type.

Whether a generic type can stand in for a related one, like IEnumerable for IEnumerable.

vertical slice

Read the section →

Organizing code by feature, so everything for one feature sits together.

virtual method

Read the section →

A method a derived class is allowed to replace.

A message saying the code builds but is probably wrong.

Watch window

Read the section →

A debugger panel showing the values of variables and expressions while paused.

WebApplicationFactory

Read the section →

A test helper that starts your whole API in memory so tests can call it.

with expression

Read the section →

Copying a record while changing a few properties.

working directory

Read the section →

The folder a terminal is currently in.

XML documentation comment

Read the section →

A /// comment above a type or method that becomes the tooltip and documentation for it.