The C# language specification is not written to be easy to read, it's written to be precise. As a result, some terms have meanings you might not understand without looking up the definition, even if the term in common everyday English has a different meaning.
Quoting the spec:
1.2 Program structure
The key organizational concepts in C# are programs, namespaces, types, members, and assemblies. C# programs consist of one or more source files. Programs declare types, which contain members and can be organized into namespaces. Classes and interfaces are examples of types. Fields, methods, properties, and events are examples of members. When C# programs are compiled, they are physically packaged into assemblies. Assemblies typically have the file extension .exe
or .dll
, depending on whether they implement applications or libraries.
From the perspective of the C# spec, a program is the source files that make up an assembly. It is not what typical users think of as a program. What typical users think of as a program, consists of multiple assemblies, each formed from what the language spec calls a program. Having multiple programs work together is normal, it's what happens even in Console.WriteLine("Hello, world!");
: your program contains the call, but the definition comes from another program.