Top 1K Features Creators Events Podcasts Books Extensions Interviews Blog Explorer CSV

C#

< >

C# is an open source programming language created in 2000 by Anders Hejlsberg.

#16on PLDB 24Years Old 2mRepos
Homepage · Leet Sheet · REPL · Spec · Wikipedia · Subreddit · Release Notes · Docs · Mailing List

C# (pronounced as see sharp) is a multi-paradigm programming language encompassing strong typing, imperative, declarative, functional, generic, object-oriented (class-based), and component-oriented programming disciplines. It was developed by Microsoft within its .NET initiative and later approved as a standard by Ecma (ECMA-334) and ISO (ISO/IEC 23270:2006). C# is one of the programming languages designed for the Common Language Infrastructure. Read more on Wikipedia...


Example from Compiler Explorer:
class Program { static int Square(int num) => num * num; }
Example from Riju:
class main { static void Main(string[] args) { System.Console.WriteLine("Hello, world!"); } }
Example from hello-world:
System.Console.WriteLine("Hello World");
Example from Linguist:
using System; namespace MongoDB.Serialization.Descriptors { internal class BsonPropertyValue { public bool IsDictionary { get; private set; } public Type Type { get; private set; } public object Value { get; private set; } public BsonPropertyValue(Type type, object value, bool isDictionary) { Type = type; Value = value; IsDictionary = isDictionary; } } }
Example from Wikipedia:
using System.Windows.Forms; class Program { static void Main(string[] args) { MessageBox.Show("Hello, World!"); System.Console.WriteLine("Is almost the same argument!"); } }
abstract add alias as ascending async await base bool break byte case catch char checked class const continue decimal default delegate descending do double dynamic else enum event explicit extern false finally fixed float for foreach from get global goto group if implicit in int interface internal into is join let lock long namespace new null object operator orderby out override params partial private protected public readonly record ref remove return sbyte sealed select set short sizeof stackalloc static string struct switch this throw true try typeof uint ulong unchecked unsafe ushort using value var virtual void volatile where while yield

Language features

Feature Supported Example Token
Standard Library Console.WriteLine("Hello, World!");
Conditionals
Access Modifiers
Switch Statements
Exceptions
Constants
Classes
While Loops
Case Sensitivity
Function Composition // Call example: // var c = Compose(f, g); // // Func g = _ => ... // Func f = _ => ... Func Compose(Func f, Func g) => _ => f(g(_));
Default Parameters Pattern public void ExampleMethod(string optionalstr = "default string") {}
Line Comments // A comment //
Dispose Blocks Pattern using (Resource resource = GetResource()) { // Perform actions with the resource. ... }
Module Pattern // In C#, namespaces are the semi-equivalent of Java's packages. namespace com.test { class Test {} }
Operator Overloading
Namespaces namespace MyNamespace; class MyClass { public void MyMethod() { System.Console.WriteLine("Creating my namespace"); } }
File Imports using static System.Console; using static System.Math; class Program { static void Main() { WriteLine(Sqrt(3*3 + 4*4)); } }
Type Casting Animal animal = new Cat(); Bulldog b = (Bulldog) animal; // if (animal is Bulldog), stat.type(animal) is Bulldog, else an exception b = animal as Bulldog; // if (animal is Bulldog), b = (Bulldog) animal, else b = null animal = null; b = animal as Bulldog; // b == null
Directives #define MAX_CLIENTS 200 int array[MAX_CLIENTS]; #if PRODUCTION //code #elif DEVELOPMENT //code #else //code #endif
Generators // Method that takes an iterable input (possibly an array) // and returns all even numbers. public static IEnumerable GetEven(IEnumerable numbers) { foreach (int i in numbers) { if ((i % 2) == 0) { yield return i; } } }
Constructors public class MyClass { private int a; private string b; // Constructor public MyClass() : this(42, "string") { } // Overloading a constructor public MyClass(int a, string b) { this.a = a; this.b = b; } } // Code somewhere // Instantiating an object with the constructor above MyClass c = new MyClass(42, "string");
Generics // Declare the generic class. public class GenericList { public void Add(T input) { } } class TestGenericList { private class ExampleClass { } static void Main() { // Declare a list of type int. GenericList list1 = new GenericList(); list1.Add(1); // Declare a list of type string. GenericList list2 = new GenericList(); list2.Add(""); // Declare a list of type ExampleClass. GenericList list3 = new GenericList(); list3.Add(new ExampleClass()); } }
Pointers // Pointers supported only under certain conditions. // Get 16 bytes of memory from the process's unmanaged memory IntPtr pointer = System.Runtime.InteropServices.Marshal.AllocHGlobal(16);
Async Await public async Task FindPageSize(Uri uri) { byte[] data = await new WebClient().DownloadDataTaskAsync(uri); return data.Length; }
MultiLine Comments /* A comment */ /* */
Print() Debugging Console.WriteLine("This is C#"); Console.WriteLine
Assignment int pldb = 80766866;
Integers int pldb = 80766866;
Booleans true false
Strings "hello world" "
Comments // A comment
Semantic Indentation X

- Build the next great programming language · Add · Issues · About · Search · Keywords · Livestreams · Labs · Resources · Acknowledgements

Built with Scroll v154.3.0