C# Programming
C# is a statically-typed, object-oriented programming language developed by Microsoft for the .NET platform. It supports modern features like async/await, pattern matching, generics, and LINQ, used for building web applications, desktop software, games, and cloud services.
itProgramming languages | OpenSkills.info
Intro
C# Programming
C# is a general-purpose programming language in the .NET ecosystem. You use it to describe data, decisions, repeated work, and interactions between software components. The C# compiler checks your source code, then produces code that a .NET runtime can execute.
This distinction gives you a useful first mental model:
C# source → compiler → .NET program → runtime + libraries → useful work
C# is the language. .NET supplies the runtime, base libraries, project tools, and application frameworks around it. A compiler error means your source violates a language or type rule. A runtime exception means the executing program reached a condition it could not handle.
Why C# exists
C# combines static type checking with automatic memory management and high-level abstractions. The compiler checks operations against known types before execution. The runtime uses garbage collection to reclaim managed objects that your program can no longer reach.
Those features remove many bookkeeping tasks, but they do not remove design work. You still decide what each type represents, which states are valid, how errors travel, and when asynchronous work should yield control.
Continue the course
This section is part of the paid course.
See pricing to subscribe, or log in if you already have access.
Where this skill leads
Relevant careers
See how this topic contributes to broader role-level skill maps.
Sources
- https://dotnet.microsoft.com/languages/csharp
Supports
- C# is a general-purpose language in the .NET ecosystem
- C# is used across web, cloud, desktop, mobile, game, device, and related application workloads
- Microsoft provides C# compilers, tools, and learning resources as part of .NET
- https://learn.microsoft.com/en-us/dotnet/csharp/tour-of-csharp/
Supports
- The C# tour introduces program structure, types, object-oriented features, and common language constructs
- The official learning path moves from beginner tutorials through the language tour and fundamentals
- C# supports multiple application workloads through the .NET ecosystem
- https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/language-specification/types
Supports
- C# types are divided into value types and reference types
- Value-type variables contain their data while reference-type variables contain references to objects
- Assignment copies the value held by a variable, including a reference value
- Types determine permitted values and operations
- https://learn.microsoft.com/en-us/dotnet/csharp/fundamentals/types/built-in-types
Supports
- C# supplies built-in numeric, Boolean, character, and text types
- Local type inference with var produces a statically typed local variable
- Built-in C# type keywords correspond to .NET types
- https://learn.microsoft.com/dotnet/csharp/fundamentals/object-oriented/
Supports
- Classes, structs, and records are distinct type declarations
- A type definition specifies data and behavior available through that type
- Records support value-based equality for data-centered models
- Structs are value types and classes are reference types
- https://learn.microsoft.com/en-us/dotnet/csharp/fundamentals/tutorials/oop
Supports
- C# supports abstraction, encapsulation, inheritance, and polymorphism
- Encapsulation hides internal state and exposes behavior through a public contract
- Polymorphism permits different implementations through shared abstractions
- https://learn.microsoft.com/en-us/dotnet/csharp/linq/
Supports
- LINQ integrates query capabilities into C#
- LINQ supports filtering, ordering, grouping, projection, and transformation
- Query syntax compiles to standard query operator calls
- Many queries execute when the result is enumerated
- IEnumerable queries use delegates while IQueryable providers can inspect expression trees
- https://learn.microsoft.com/en-us/dotnet/csharp/linq/standard-query-operators/
Supports
- Sequence-returning standard query operators commonly use deferred execution
- Singleton operators such as Sum and Average execute immediately
- Standard operators include filtering, projection, aggregation, sorting, grouping, and joining
- IQueryable providers may translate expression trees to a native query language
- https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/builtin-types/nullable-reference-types
Supports
- Nullable reference annotations express whether null is intended
- Compiler null-state analysis produces warnings about possible null assignments and dereferences
- Nullable reference annotations do not create different runtime types or runtime checks
- The null-forgiving operator changes compiler analysis without validating the runtime value
- https://learn.microsoft.com/en-us/dotnet/csharp/asynchronous-programming/
Supports
- Task and Task of T represent asynchronous operations
- Async and await support task-based asynchronous programming
- Awaiting enables code to yield control until an operation completes
- Asynchronous input and output can avoid blocking responsive interfaces and service threads
- https://learn.microsoft.com/en-us/dotnet/csharp/asynchronous-programming/async-scenarios
Supports
- Input-output-bound work and CPU-bound work require different asynchronous approaches
- Await yields control and resumes the method after task completion
- The compiler transforms asynchronous methods into state machines
- Asynchrony does not by itself guarantee parallel execution
- https://ecma-international.org/publications-and-standards/standards/ecma-334/
Supports
- ECMA-334 specifies C# program representation, syntax constraints, semantic rules, and conformance limits
- The seventh edition of ECMA-334 was published in December 2023
- C# is a general-purpose, object-oriented programming language
- A conforming C# implementation need not rely on Microsoft's .NET runtime if it provides the required execution support another way
