C# languages
What Are C# Languages?
C# languages are the family of statically typed, object-oriented programming languages defined by the C# specification and executed on a managed runtime that provides automatic memory management and verifiable type safety. The language was designed at Microsoft by a team led by Anders Hejlsberg and first released in 2000, drawing its syntax from the C family while replacing manual memory management and pointer arithmetic with a garbage-collected heap and a common type system. The plural is a matter of record rather than style: the standardized editions, the vendor version series, and the constrained profiles used on restricted runtimes are separately numbered lines that do not advance in step.
C# occupies a deliberate middle position. It keeps the block structure, operators, and declaration syntax that a C or C++ programmer already knows, and it gives up direct control of memory in exchange for a runtime that verifies types before execution and reclaims objects automatically. Unsafe code is still available behind an explicit keyword, which confines pointer work to blocks a reviewer can find.
Standardization
Two standards bodies publish the language. Ecma International ratified the first edition of the C# specification as ECMA-334 in December 2001, and the ECMA-334 standard has since reached its seventh edition, published in December 2023. ISO and IEC publish the same language as ISO/IEC 23270, first issued in April 2003 and most recently as ISO/IEC 23270:2018. The two lines are not in lockstep, and neither tracks the vendor version numbers that most programmers use in conversation, so the mapping between a C# version and the standard edition that defines it is published separately as the Ecma standards for .NET. That distinction matters in procurement and certification, where a contract names an exact document number rather than a marketing version.
The Managed Execution Model
C# does not define its own runtime. It compiles to an intermediate bytecode executed by the Common Language Infrastructure, standardized as ECMA-335 and as ISO/IEC 23271. Partition I of that standard specifies the Common Type System, which fixes how values and references behave across languages; the Virtual Execution System, which loads and runs the bytecode; and the Common Language Specification, a subset of features that any conforming language must accept so that a library written in one language is usable from another. Because the contract is the bytecode and the metadata rather than the source language, C#, F#, and Visual Basic share libraries without wrappers, and a just-in-time compiler can specialize code for the processor it finds at run time.
Language Revisions
Each revision has added a distinct capability rather than syntactic convenience alone. Generics arrived in C# 2.0 with reification at the runtime level, so a generic collection carries its element type at execution and avoids the boxing cost that erasure imposes elsewhere. C# 3.0 added Language Integrated Query, which gives queries over collections, databases, and XML a single expression syntax checked by the compiler. C# 5.0 introduced the async and await keywords, turning callback-based asynchronous code into ordinary sequential-looking control flow. Later revisions added nullable reference types, which move null-dereference errors to compile time, along with records for immutable data and span types for allocation-free access to contiguous memory.
Implementations extend beyond the original runtime. The Mono project built an independent implementation of the Ecma standards, which is why C# became the scripting language of the Unity engine and reached mobile and console targets well before the primary runtime was open-sourced and made cross-platform.
Applications
C# languages are used across a range of engineering domains, including:
- Enterprise business applications and line-of-business systems
- Web services and server-side APIs
- Game development and real-time interactive simulation
- Desktop and mobile client software
- Cloud services and distributed backend systems
- Test automation, tooling, and internal developer platforms