C# is an open source programming language created in 2000 by Anders Hejlsberg.
#16on PLDB | 24Years Old | 2mRepos |
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...
class Program
{
static int Square(int num) => num * num;
}
class main {
static void Main(string[] args) {
System.Console.WriteLine("Hello, world!");
}
}
System.Console.WriteLine("Hello World");
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;
}
}
}
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
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 |
|
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 |
|
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 |
|
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 |
|
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 |