C# – simpelt programmerings-cheat sheet

Grundlæggende programmering uden egne metoder · C# / Visual Studio

1. Variable, erklæring, tildeling

int age = 17;
double price = 24.95;
string name = "Anna";
bool isReady = true;
char grade = 'A';

age = 18;
price = price * 1.25;
=

Tildeling: gem værdien fra højresiden i variablen på venstresiden. Højresiden beregnes først. age = 18 betyder altså ikke "er lig med", men "gem 18 i age".

Erklæring: angiver en variabels type og reserverer plads i hukommelsen. En erklæring og en tildeling kan stå sammen: int age = 17.

2. Konsol input og output

Console.Write("Navn: ");
string name = Console.ReadLine();

Console.WriteLine("Hej " + name);

Console.Write("Alder: ");
int age = int.Parse(Console.ReadLine());

double number =
    double.Parse(Console.ReadLine());

if (int.TryParse(Console.ReadLine(), out int parsedNumber))
{
    Console.WriteLine("Tallet er " + parsedNumber);
}

TryParse() forsøger at omdanne tekst og returnerer false, hvis det ikke lykkes.

3. String manipulation

string firstName = "Anna";
string lastName = "Jensen";
int age = 17;

// 1. Konkatenering: sæt strings sammen med +
string withPlus = "Hej " + firstName + " " + lastName;

// 2. Interpolation: indsæt værdier direkte med { }
string withInterpolation = $"Hej {firstName} {lastName}, du er {age} år";

// 3. string.Format: pladsholdere starter ved {0}
string withFormat = string.Format(
    "Hej {0} {1}, du er {2} år", firstName, lastName, age);

// 4. @-notation: backslash er almindelig tekst
string path = @"C:\Users\Anna\Documents";
string quote = @"Hun sagde: ""Hej"".";

+ er fint til få dele. Brug normalt interpolation, når værdier skal ind i en tekst. string.Format er nyttig, når formatet ligger separat eller skal genbruges.

I en @"..."-string skrives \ uden ekstra escape. Et dobbelt citationstegn skrives som "". Kombinationen $@"C:\Users\{firstName}" giver både interpolation og verbatim notation.

string text = "  C# er sjovt  ";
string clean = text.Trim();                 // "C# er sjovt"
int length = clean.Length;                  // 11
bool found = clean.Contains("sjovt");      // true
string changed = clean.Replace("sjovt", "fedt");
string beginning = clean.Substring(0, 2);   // "C#"
string upper = clean.ToUpper();             // "C# ER SJOVT"

Strings er uforanderlige: text.Trim() og text.Replace(...) ændrer ikke text. Gem resultatet i en variabel, hvis du vil bruge den ændrede tekst.

4. Regneoperatorer

+addition / tekstsammensætning (konkatenering) -subtraktion *multiplikation /division – med int kasseres resten %rest ved division (modulo) ++læg 1 til --træk 1 fra +=læg til og gem, fx age += 1 -=træk fra og gem *=gang med og gem /=divider med og gem %=beregn rest og gem
int whole = 11 / 2;       // 5 – heltalsdivision
double exact = 11.0 / 2;  // 5.5 – mindst ét tal er double
int result = 7 % 3;       // 1 – resten efter division
age++;
price = price * 1.10;

Vigtigt: C# regner *, / og % før + og -. Brug parenteser, hvis rækkefølgen skal være tydelig: (2 + 3) * 4.

Vigtigt: age++ og ++age lægger begge 1 til. I et større udtryk bruges den gamle værdi ved postfix (age++) og den nye værdi ved prefix (++age).

5. Sammenligning og logik

==lig med !=forskellig fra <mindre end >større end <=mindre end eller lig med >=større end eller lig med &&OG ||ELLER ^eksklusiv OR (XOR) !IKKE

6. if – betinget udførsel

if (age >= 18)
{
    Console.WriteLine("Voksen");
}

if – else

if (age >= 18)
{
    Console.WriteLine("Voksen");
}
else
{
    Console.WriteLine("Ikke voksen");
}

if – else if – else

if (score >= 90)
{
    grade = "A";
}
else if (score >= 80)
{
    grade = "B";
}
else
{
    grade = "C";
}

Ternær operator

string status = age >= 18
    ? "Voksen"
    : "Ikke voksen";

Form: betingelse ? værdi_hvis_sand : værdi_hvis_falsk.

7. switch

switch (choice)
{
    case 1:
    case 2:
        Console.WriteLine("Start");
        break;

    case 3:
        Console.WriteLine("Stop");
        break;

    default:
        Console.WriteLine("Ugyldigt valg");
        break;
}

break afslutter den aktuelle case. default bruges, hvis ingen case passer.

8. while-løkke

int count = 1;

while (count <= 5)
{
    Console.WriteLine(count);
    count++;
}

Betingelsen testes før hver gennemløb.

9. do–while-løkke

int number;

do
{
    Console.Write("Tal: ");
    number = int.Parse(Console.ReadLine());
}
while (number < 1);

Blokken udføres mindst én gang. Betingelsen testes efter gennemløbet.

10. for-løkke

for (int i = 0; i < 10; i++)
{
    Console.WriteLine(i);
}

Form: for (start; betingelse; ændring)

Baglæns

for (int i = 10; i >= 0; i--)
{
    Console.WriteLine(i);
}

11. foreach-løkke

string[] names =
    { "Anna", "Bo", "Clara" };

foreach (string name in names)
{
    Console.WriteLine(name);
}

foreach gennemløber hvert element i en samling én gang.

12. Arrays

int[] numbers = { 10, 20, 30, 40 };

Console.WriteLine(numbers[0]);  // 10
numbers[1] = 25;

Console.WriteLine(numbers.Length);

Indeks starter ved 0. Sidste indeks er Length - 1.

13. break og continue

for (int i = 0; i < 10; i++)
{
    if (i == 5)
        break;       // stop løkken

    if (i % 2 == 0)
        continue;    // spring resten over

    Console.WriteLine(i);
}

Husk

int      heltal
double   decimaltal
string   tekst
char     ét tegn
bool     true / false

;        afslutter en sætning
{ ... }  blok
//       kommentar