Outline of the C sharp programming language
Jump to navigation
Jump to search
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)
|
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 runtime environment.[1][2][3]
What type of language is C#?
[edit | edit source]- 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 environment (.NET runtime) that handles memory management via garbage collection
- Object-oriented programming language
History of C#
[edit | edit source]- 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 | edit source]- 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 / Limitations
[edit | edit source]- Garbage collection overhead[40]
- Platform dependencies [41]
C# toolchain
[edit | edit source]Compilers
[edit | edit source]- 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 | edit source]- 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 | edit source]- .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 | edit source]- 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 | edit source]- Unity
- VS Code extensions
- Godot with C# scripting support
- Microsoft Office add-ins
- Visual Studio Tools for Office
Example source code
[edit | edit source]C# publications
[edit | edit source]Books about C#
[edit | edit source]- 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 | edit source]- 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 | edit source]- Introduction to C#
- Official Microsoft C# documentation
- C# overview page
- W3Schools – C# tutorials
- GeeksforGeeks – C# basics
Competitive programming
[edit | edit source]- LeetCode — supports C# submissions
- HackerRank — includes C# challenges
- Codeforces — supports C# in contests
See also
[edit | edit source]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 | edit source]- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ https://www.geeksforgeeks.org/csharp-programming-language-introduction/ [permanent dead link]
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).