Outline of the C sharp programming language
Appearance
This article has multiple issues. Please help improve it or discuss these issues on the talk page. (Learn how and when to remove these messages)
|
| Part of a series on |
| Software development |
|---|
The following outline is provided as an overview of and topical guide to C#:
C# (pronounced “C-sharp”) is a free and open-source multi-paradigm programming language developed by Microsoft as part of its .NET initiative. C# was designed by Anders Hejlsberg and first appeared in 2000 with the release of .NET Framework. The language emphasizes type safety, component-oriented programming, and modern object-oriented programming concepts. C# syntax is similar to C++ and Java, but is tightly integrated with the .NET Common Language Runtime (CLR) environment.[1][2][3]
What type of language is C#?
[edit]- Programming language – artificial language designed to communicate instructions to a computer
- Compiled language – compiled to Common Intermediate Language and executed by the Common Language Runtime
- General-purpose programming language
- Imperative programming – paradigm using statements that change program state, focusing on how to perform computation.
- Functional programming – treating computation as evaluation of functions, avoiding mutable state, focusing on what to compute.
- Component-oriented programming – reusable components with well-defined interfaces for modularity and code reuse.
- Statically typed programming language – type checking performed at compile time
- Managed code – runs in a virtual machine (VM) environment, the .NET Common Language Runtime (CLR), that handles memory management via garbage collection
- Object-oriented programming language
History of C#
[edit]- Anders Hejlsberg – lead architect and creator of C#
- Microsoft – developer and maintainer of C#
- 2000 – C# first appeared as part of .NET Framework development[4]
- 2002 – C# 1.0 released with Visual Studio .NET
- 2007 – C# 3.0 added LINQ, lambda expressions, and extension methods
- 2012 – C# 5.0 added async and await and caller info attributes
- 2015 – C# 6.0 added expression-bodied members, string interpolation, and Roslyn.
- 2014 – .NET Core introduced as an open-source and cross-platform implementation
- 2020 – .NET 5 unified .NET Framework and .NET Core
- 2024 – C# 13 added params collections and partial properties[5]
General C# concepts
[edit]- Assemblies[6]
- Attributes[7]
- Async/await[8]
- Asynchronous programming[9]
- Classes and objects[10]
- Collections[11]
- Delegates[12]
- Encapsulation[13]
- Events[14]
- Exception handling[15]
- Garbage collection[16][17]
- Generics[18][19]
- Inheritance[20]
- Interfaces[21]
- Lambdas[22]
- Language Integrated Query[23]
- Memory management[24][25]
- Namespaces[26]
- Nullable type[27]
- Operator overloading[28]
- Pattern matching[29]
- Properties[30]
- Records[31]
- Reflection[32]
- Serialization[33]
- Structs[34]
- Threads[35] and tasks[36]
- Type inference[37]
- Unit testing[38]
- Value type and reference type[39]
Issues, limits
[edit]- Garbage collection overhead[40]
- Platform dependencies[41]
C# toolchain
[edit]Compilers
[edit]- Roslyn – open-source compiler platform for C# and VB.NET
- Mono – cross-platform implementation of C# and .NET
- Bartok – experimental AOT compiler by Microsoft Research
- CoreRT – .NET Foundation project for AOT and JIT compilation
- IL2CPU – AOT compiler used by the COSMOS operating system
- RemObjects C# – AOT compiler supporting multiple platforms
- RyuJIT – JIT compiler used in .NET Core and .NET 5+
- SharpDevelop – open-source IDE and C# compiler under LGPL
- Visual C# – Microsoft’s primary JIT compiler for C#
- Visual C# Express – freeware edition of Visual C# for beginners
- Portable.NET – discontinued AOT compiler from the DotGNU project
Build and package management
[edit]- MSBuild – Microsoft’s official build engine
- NuGet – official .NET package manager and registry
- dotnet CLI – command-line interface for building, running, and publishing C# applications.[42]
C# libraries and frameworks
[edit]- .NET Standard – specification ensuring API compatibility across .NET implementations
- ASP.NET Core – framework for building web applications and APIs
- Entity Framework Core – object-relational mapper (ORM)
- Xamarin – framework for building cross-platform mobile applications
- Blazor – framework for building interactive web UIs with C#
- Unity – game engine using C# as its primary scripting language
Testing and benchmarking
[edit]- xUnit – popular open-source testing framework
- NUnit – testing framework for .NET
- MSTest – Microsoft’s built-in test framework
- BenchmarkDotNet – library for performance benchmarking in C#[43]
Notable projects written in C#
[edit]- Unity
- VS Code extensions
- Godot with C# scripting support
- Microsoft Office add-ins
- Visual Studio Tools for Office
Example source code
[edit]C# publications
[edit]Books about C#
[edit]- Andrew Troelsen – Pro C# and the .NET Platform
- Bill Wagner – Effective C#
- Herbert Schildt – C#: A Beginner's Guide and C# 4.0: The Complete Reference
- Jeff Prosise – Programming Microsoft .NET
- Jeffrey Richter – CLR via C#
- Jennifer Greene – Head First C#
- Jon Skeet – C# in Depth
- Mark J. Price – C# 12 and .NET 8 – Modern Cross-Platform Development
- Rob Miles – The C# Programming Yellow Book[44]
C# dialects and related languages
[edit]- Visual Basic .NET – shares the same runtime and type system
- F# – functional-first language on the .NET platform
- PowerShell – built on .NET and C#
- Q# – quantum programming language from Microsoft influenced by C#
C# learning resources
[edit]- Introduction to C#
- Official Microsoft C# documentation
- C# overview page
- W3Schools – C# tutorials
- GeeksforGeeks – C# basics
Competitive programming
[edit]- LeetCode – supports C# submissions
- HackerRank – includes C# challenges
- Codeforces – supports C# in contests
See also
[edit]Wikibooks has a book on the topic of: C Sharp Programming
- Comparison of C Sharp and Java
- Outline of computer programming
- Outline of software
- Outline of software engineering
- Outlines of other programming languages
- Outline of the C programming language
- Outline of the C++ programming language
- Outline of the Java programming language
- Outline of the JavaScript programming language
- Outline of the Perl programming language
- Outline of the Python programming language
- Outline of the Rust programming language
References
[edit]- ^ "C# Guide – .NET managed language". learn.microsoft.com.
- ^ https://www.geeksforgeeks.org/csharp-programming-language-introduction/ [permanent dead link]
- ^ "C# – a modern, open-source programming language – .NET". Microsoft.
- ^ "Introduction – C# language specification". learn.microsoft.com.
- ^ "The history of C#". learn.microsoft.com.
- ^ "Assemblies in .NET – .NET". learn.microsoft.com.
- ^ "Attributes – C# language specification". learn.microsoft.com.
- ^ "Async and Await in C#". GeeksforGeeks. August 1, 2022.
- ^ "Asynchronous programming – C#". learn.microsoft.com.
- ^ "Classes and objects tutorial – C#". learn.microsoft.com.
- ^ "Collections – C# reference". learn.microsoft.com.
- ^ "Work with delegate types in C# – C#". learn.microsoft.com.
- ^ "Encapsulation in C#". GeeksforGeeks. October 15, 2018.
- ^ "Events – C#". learn.microsoft.com.
- ^ "Exception Handling – C#". learn.microsoft.com.
- ^ ".NET garbage collection – .NET". learn.microsoft.com.
- ^ "Garbage Collection in C# | .NET Framework". GeeksforGeeks. April 17, 2019.
- ^ "C# generics (With Examples)". www.programiz.com.
- ^ "Generic classes and methods – C#". learn.microsoft.com.
- ^ "Tutorial: Introduction to Inheritance – C#". learn.microsoft.com.
- ^ "Interfaces – define behavior for multiple types – C#". learn.microsoft.com.
- ^ "Lambda Expressions in C#". GeeksforGeeks. September 20, 2019.
- ^ "Language Integrated Query (LINQ) – C#". learn.microsoft.com.
- ^ "C# Memory Management". GeeksforGeeks. September 19, 2025.
- ^ "Memory management and patterns in ASP.NET Core". learn.microsoft.com.
- ^ "Namespaces – C# language specification". learn.microsoft.com.
- ^ "Nullable reference types – C#". learn.microsoft.com.
- ^ "Operator overloading – Define unary, arithmetic, equality, and comparison operators. – C# reference". learn.microsoft.com.
- ^ "Pattern matching overview – C#". learn.microsoft.com.
- ^ "Properties – C#". learn.microsoft.com.
- ^ "Records – C# reference". learn.microsoft.com.
- ^ "Reflection in .NET". learn.microsoft.com.
- ^ "Serialization – .NET". learn.microsoft.com.
- ^ "Structs – C# language specification". learn.microsoft.com.
- ^ "Using threads and threading – .NET". learn.microsoft.com.
- ^ "Task-based asynchronous programming – .NET". learn.microsoft.com.
- ^ Chand, Mahesh. "Type Inference in C#". www.c-sharpcorner.com.
- ^ Kumar, Ravi Ranjan. "A Basic Introduction To C# Unit Test For Beginners". www.c-sharpcorner.com.
- ^ "Reference types – C# reference". learn.microsoft.com.
- ^ "Garbage Collection and Performance – .NET". learn.microsoft.com.
- ^ "Dependency loading – .NET". learn.microsoft.com.
- ^ ".NET CLI". learn.microsoft.com.
- ^ "Home | BenchmarkDotNet". benchmarkdotnet.org.
- ^ "Top C# Books recommended by experts – MentorCruise". mentorcruise.com.