Overview

C# (pronounced "see sharp") is a high-level, statically typed programming language designed to run on the .NET runtime. Created by a Microsoft team led by Anders Hejlsberg, C# emphasizes productivity, safety and a clear object-oriented model. It is commonly used with the Common Language Runtime (CLR) and integrates closely with the .NET libraries. For official documentation and learning resources see the C# documentation.

Language characteristics

C# combines features from several languages in a modern, managed environment. Key characteristics include garbage-collected memory management, a strong static type system, object-oriented programming with classes and interfaces, and support for generics, delegates and events. The language has evolved to include functional-style constructs such as lambda expressions and integrated query capabilities (LINQ).

History and standardization

C# was introduced with the .NET initiative in the early 2000s and first shipped with the .NET Framework in 2001. It has been standardized by international bodies (see the language standard) and has continued to evolve through regular releases. Notable milestones include C# 8.0 (2019) and subsequent language versions that added features like nullable reference types, records and improved pattern matching.

Common uses and ecosystem

C# powers a wide range of applications across multiple platforms. Typical uses include:

  • Server and web applications with ASP.NET Core.
  • Desktop software using Windows technologies and cross-platform UI toolkits.
  • Mobile apps via Xamarin and .NET MAUI.
  • Game development — C# is the primary scripting language for many game engines such as Unity.
  • Cloud services, IoT and enterprise systems.

The language is supported by mature tooling such as Visual Studio and Visual Studio Code, and by an extensive package ecosystem.

Notable language features

C# includes several features that aid expressiveness and safety: async/await for asynchronous programming, LINQ for data-oriented queries, pattern matching and tuples for concise data handling, and records for immutable data models. The runtime's type system and interoperability model allow C# to interoperate with other .NET languages and libraries.

Compatibility, comparisons and notable facts

Compared with unmanaged languages like C++, C# trades manual memory control for safety and faster development cycles. Compared to Java, C# has a similar object model but diverged with features such as properties, events and deeper language support for asynchronous programming. C# remains under active development by Microsoft and the open-source community; the broader .NET ecosystem and vendor documentation are available from Microsoft.

If you are learning C#, tutorials and the standard references linked above give practical examples, idiomatic patterns and guidance on current language versions.