Følgende side hænger sammen med følgende GitHub repo - https://github.com/Mercantec-GHC/CSharpBogen

Der er flere visuelle eksempler på følgende PowerPoint slides - https://edumercantec-my.sharepoint.com/:p:/g/personal/mags_edu_mercantec_dk/Eara87TMCAdLtewalPesm34Bp4bKxOnZwQHoolmqFznETQ?e=bQfV1d

C# - Basics

1. Dit første program - Main(string[] args)

Vi har en standart konsol app i C#, vi skal starte med at forstå programmet før vi kan skrive i det!

  namespace FirstProgram
  {
    public class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hej og velkommen til C#-bogen!");
        }
    }
  }

Først skal vi lige decode alle kodeordene som starter vores kode

1. namespace

Officiel Dokumentation - Namespaces

Et namespace er brugt til at organisere jeres kode og separerer det. Det er i toppen af stort set alle jeres filer og kan indeholde klasser som vi lærer om senere og kan faktisk også indeholde nestet namespaces!

2. Tuborg-klammer / curly braces -> {}

Officiel Dokumentation - Formatting

I kender nok "{}" fra andre sprog, nogle få bruger dem ikke normalt såsom Python. De definere hvornår jeres namespace, metode eller funktion starter og stopper.

3. public

Officiel Dokumentation - public

Public betyder at den efterfølgende klasse eller variabel er offentlig tilgængelig. Altså at den kan tilgås uden for dens egen klasse eller namespace. Vi dækker emnet omkring Public, Private osv. senere i forløbet!

4. class

class er også et keyword som vi stifter meget mere bekendtskab med senere i forløbet. Vi har dedikeret en hel uge til OOP (Object Orienteret Programmering), så der skal vi nok få dækket det. Generelt bruger vi klasser til at holde på variabler (Attributes) og metoder, vi snakker i kapitel 8 omkring objekter som hænger tæt sammen med klasser!

5. static

vores Main metode skal altid have static kodeordet, det gør at vi kan kalde metoden uden at lave en instans af klassen. Vi kommer ikke rigtig til at bruge kodeordet senere, så I behøver ikke dyb viden omkring det!

6. void

void betyder at vores metode ikke retunere noget, hvis vi i løbet af metoden bruger kodeordet "return" er det vigtigt at skrive præcis hvilken type vi retunere i stedet for "void". Vi kommer til at bruge den her funktionalitet meget, senere i vores forløb og der kommer det til at give meget mere mening!

7. Main(string[] args)

Main() er vores hovedmetode, det betyder at når vi starter programmet ser den automatisk efter en Main()-metode som starter vores program. Senere når vi har større projekter, bruger vi en fil kaldet program.cs til at gøre præcis det samme!

8. Console

Console er en del af "System" pakken, det gør at vi har et sted at skrive tekst til. Udover det kan de også tage input som vi ser senere!

2. Variabler

Microsoft dokumentation kan findes her - Variabler

Variabler i C# er brugt til at gemme og manipulere data. En variabel kan være en bestemt type, f.eks. en heltal, en flydende kommatal, en streng eller en boolsk værdi.

For at erklære en variabel i C#, skal du angive dens type og give den et navn. For eksempel kan du erklære en variabel af typen int (heltal) ved at skrive:

int nummer;

Her har vi erklæret en variabel ved navn nummer af typen int. Du kan også initialisere variablen med en startværdi ved at tildele den en værdi. For eksempel:

int alder = 25;

Her har vi erklæret og initialiseret en variabel ved navn alder af typen int med værdien 25.

Når variablen erklæres, kan du til enhver tid tildele en ny værdi til den. For eksempel:

alder = 30;

Du kan også kombinere variabler og udføre operationer med dem. For eksempel:

int x = 5;
int y = 10;
int sum = x + y;

Her har vi erklæret tre variabler, x, y og sum, og udført en addition mellem x og y og gemt resultatet i sum.

Variabler kan også have forskellige scopes, hvilket betyder, at de kun er synlige og tilgængelige inden for visse områder af din kode. For eksempel kan du erklære en variabel inden for en metode, og den vil kun være synlig inden for den metode.

Det er vigtigt at forstå, hvordan man arbejder med variabler i C#, da de er fundamentale for at gemme og manipulere data i programmeringssprog.

Her er en liste over de enkelte primitive typer af variabler i C#:

Keyword Aliased type Formål
sbyte System.SByte Værdier fra -128 t.o.m. 127 – 8-bit signed
byte System.Byte Værdier fra 0 til og med 255 – 8-bit unsigned
short System.Int16 Værdier fra -32768 til 32767 – 16-bit signed
ushort System.UInt16 Værdier fra 0 til 65535 – 16-bit unsigned
int System.Int32 Værdier fra -2147483648 til 2147483648 – 32-bit signed
uint System.UInt32 Værdier fra 0 til 4294967295 – 32-bit signed
long System.Int64 Værdier fra -9.223.372.036.854.775.808 til 9.223.372.036.854.775.808 – 64-bit signed
ulong System.UInt64 Værdier fra 0 til 18.446.744.073.709.551.615
char System.Char Værdier fra 0 til 65535 – 16-bit unsigned
float System.Single Værdier fra 1.5 × 10⁻⁴⁵ til 3.4 × 10³⁸  med precision af 7 decimaler.
double System.Double Værdier fra 5.0 × 10⁻³²⁴ til 1.7 × 10³⁰⁸ med precision af 15-16 decimaler.
bool System.Boolean Værdier fra 0 til 1 – hvor 0 er False og 1 er True
decimal System.Decimal Værdier fra -7.9 × 10⁻²⁸ til 7.9 × 10²⁸, med precision af 28 decimaler.

Strings

Strenge (strings) er en grundlæggende datatype i C#, som bruges til at repræsentere tekst. En streng er en sekvens af tegn og kan indeholde bogstaver, tal, symboler og mellemrum. I C# er strenge immutables, hvilket betyder, at deres værdi ikke kan ændres efter oprettelsen. Hvis du ændrer en streng, oprettes der en ny streng i hukommelsen.

Oprettelse af Strenge

Der er flere måder at oprette og initialisere strenge i C#:

Direkte Initialisering

string greeting = "Hello, World!";

Brug af String Konstruktor

char[] characters = { 'H', 'e', 'l', 'l', 'o' };
string greeting = new string(characters);

Strengeegenskaber og Metoder

Strenge har mange indbyggede egenskaber og metoder, som gør det nemt at arbejde med tekstdata.

Længde

For at få længden af en streng kan du bruge Length-egenskaben:

string greeting = "Hello, World!";
int length = greeting.Length; // 13

Tilgå Tegn

Du kan tilgå individuelle tegn i en streng ved hjælp af indeks:

char firstChar = greeting[0]; // 'H'
char lastChar = greeting[greeting.Length - 1]; // '!'

Sammenkædning af Strenge

Du kan sammenkæde (konkatenere) strenge ved hjælp af +-operatoren eller String.Concat-metoden:

string firstName = "John";
string lastName = "Doe";
string fullName = firstName + " " + lastName; // "John Doe"

// Alternativt
string fullName = String.Concat(firstName, " ", lastName);

Formatering af Strenge

Du kan formatere strenge ved hjælp af String.Format-metoden eller interpolerede strenge (tilføjet i C# 6.0):

String.Format

int age = 30;
string message = String.Format("You are {0} years old.", age); 
// "You are 30 years old."

Interpolerede Strenge med $

Personligt er det her min fortrukne måde at indsætte variabler ind en streng!

int age = 30;
string message = $"You are {age} years old."; // "You are 30 years old."

Flere linjer med @””

string message = @"Jeg er en utrolig lang streng, som fylder alt for meget!
									 Heldigvis kan jeg skrives på flere linjer!"

Splitting og Sammenføjning af Strenge

Du kan splitte en streng i et array af understrenge ved hjælp af Split-metoden:

string sentence = "The quick brown fox";
string[] words = sentence.Split(' '); // { "The", "quick", "brown", "fox" }

Du kan sammenføje et array af strenge til en enkelt streng ved hjælp af Join-metoden:

Inputs

9. Debugging

10. Kodestandarter

Introduktion

Kodestandarter sikrer konsistens, læsbarhed og vedligeholdelighed i softwareprojekter. Dette kapitel gennemgår vigtige principper for at skrive klar og effektiv C#-kode, herunder navngivning, formatering, og anvendelse af metoder og klasser.


Navngivningskonventioner