Top 1,000 Features Creators Events Podcasts Extensions Blog Explorer CSV Download

C#

< >

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

#16on PLDB 24Years Old 2mRepos

Try now: Riju Β· Replit

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 Token Example
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
Console.WriteLine("This is C#");
Assignment βœ“
int pldb = 80766866;
Integers βœ“
int pldb = 80766866;
Booleans βœ“ true false
Strings βœ“ "
"hello world"
Comments βœ“
// A comment
Semantic Indentation X

View source

- Build the next great programming language Β· About Β· Resources Β· Acknowledgements Β· Part of the World Wide Scroll