---
title: C#
date: 2021-12-14 12:22:00
background: bg-[#8c4c8a]
tags:
  - object-oriented
  - class
categories:
  - Programming
intro: |
  C# quick reference cheat sheet that provides basic syntax and methods.
plugins:
  - copyCode
---

## Getting Started

### Hello.cs

```cs
class Hello {
  // main method
  static void Main(string[] args)
  {
    // Output: Hello, world!
    Console.WriteLine("Hello, world!");
  }
}
```

Creates a project directory for new console application

```cs
$ dotnet new console
```

Lists all the applications templates

```cs
$ dotnet new list
```

Compiling and running (make sure you are in the project directory)

```shell script
$ dotnet run
Hello, world!
```

### Variables

```cs
int intNum = 9;
long longNum = 9999999;
float floatNum = 9.99F;
double doubleNum = 99.999;
decimal decimalNum = 99.9999M;
char letter = 'D';
bool @bool = true;
string site = "cheatsheets.zip";

var num = 999;
var str = "999";
var bo = false;
```

### Primitive Data Types

| Data Type | Size             | Range                     |
| --------- | ---------------- | ------------------------- |
| `int`     | 4 bytes          | -2^31^ ^to^ 2^31^-1       |
| `long`    | 8 bytes          | -2^63^ ^to^ 2^63^-1       |
| `float`   | 4 bytes          | 6 ^to^ 7 decimal digits   |
| `double`  | 8 bytes          | 15 decimal digits         |
| `decimal` | 16 bytes         | 28 ^to^ 29 decimal digits |
| `char`    | 2 bytes          | 0 ^to^ 65535              |
| `bool`    | 1 bit            | true / false              |
| `string`  | 2 bytes per char | _N/A_                     |

{.show-header}

### Comments

```cs
// Single-line comment

/* Multi-line
   comment */

// TODO: Adds comment to a task list in Visual Studio

/// Single-line comment used for documentation

/** Multi-line comment
    used for documentation **/

```

### Strings

```cs
string first = "John";
string last = "Doe";

// string concatenation
string name = first + " " + last;
Console.WriteLine(name); // => John Doe
```

See: [Strings](#c-strings)

### User Input

```cs
Console.WriteLine("Enter number:");
if(int.TryParse(Console.ReadLine(),out int input))
{
  // Input validated
  Console.WriteLine($"You entered {input}");
}
```

### Conditionals

```cs
int j = 10;

if (j == 10) {
  Console.WriteLine("I get printed");
} else if (j > 10) {
  Console.WriteLine("I don't");
} else {
  Console.WriteLine("I also don't");
}
```

### Arrays

```cs
char[] chars = new char[10];
chars[0] = 'a';
chars[1] = 'b';

string[] letters = {"A", "B", "C"};
int[] mylist = {100, 200};
bool[] answers = {true, false};
```

### Loops

```cs
int[] numbers = {1, 2, 3, 4, 5};

for(int i = 0; i < numbers.Length; i++) {
  Console.WriteLine(numbers[i]);
}
```

---

```cs
foreach(int num in numbers) {
  Console.WriteLine(num);
}
```

## C# Strings

### String concatenation

```cs
string first = "John";
string last = "Doe";

string name = first + " " + last;
Console.WriteLine(name); // => John Doe
```

### String interpolation

```cs
string first = "John";
string last = "Doe";

string name = $"{first} {last}";
Console.WriteLine(name); // => John Doe
```

### String Members {.row-span-2}

| Member     | Description                                                                                                                          |
| ---------- | ------------------------------------------------------------------------------------------------------------------------------------ |
| Length     | A property that returns the length of the string.                                                                                    |
| Compare()  | A static method that compares two strings.                                                                                           |
| Contains() | Determines if the string contains a specific substring.                                                                              |
| Equals()   | Determines if the two strings have the same character data.                                                                          |
| Format()   | Formats a string via the {0} notation and by using other primitives.                                                                 |
| Trim()     | Removes all instances of specific characters from trailing and leading characters. Defaults to removing leading and trailing spaces. |
| Split()    | Removes the provided character and creates an array out of the remaining characters on either side.                                  |

{.show-header}

### Verbatim strings

```cs {.wrap}
string longString = @"I can type any characters in here !#@$%^&*()__+ '' \n \t except double quotes and I will be taken literally. I even work with multiple lines.";
```

### Member Example

```cs
// Using property of System.String
string lengthOfString = "How long?";
lengthOfString.Length           // => 9

// Using methods of System.String
lengthOfString.Contains("How"); // => true
```

## Misc

### General .NET Terms {.col-span-2}

| Term                          | Definition                                                                                                                                                                                         |
| ----------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Runtime                       | A collection of services that are required to execute a given compiled unit of code.                                                                                                               |
| Common Language Runtime (CLR) | Primarily locates, loads, and managed .NET objects. The CLR also handles memory management, application hosting, coordination of threads, performing security checks, and other low-level details. |
| Managed code                  | Code that compiles and runs on .NET runtime. C#/F#/VB are examples.                                                                                                                                |
| Unmanaged code                | Code that compiles straight to machine code and cannot be directly hosted by the .NET runtime. Contains no free memory management, garbage collection, etc. DLLs created from C/C++ are examples.  |

{.show-header}
