Lathund

Används för att skriva ut saker till användaren eller läsa in saker.

Console.WriteLine("Vad heter du?");
string name = Console.ReadLine();

Svenska tecken i konsollen

Ibland kan det vara problem med svenska tecken i konsollen. Om det är problem skriv följande kod i början av programmet.

Console.InputEncoding = System.Text.Encoding.Unicode;
Console.OutputEncoding = System.Text.Encoding.Unicode;

Kommentarer

Genom att skriva // framför något så gör man så det inte tolkas som kod utan som en kommentar.

// Det här är en kommentar.
// Console.WriteLine("Det här är också en kommentar; en kod som inte körs");

Variabler

Variabler lagrar information – allt man vill kunna komma ihåg i programmet lagras i variabler.

Varje variabel har en datatyp. När man skapar en variabel så anger man vilken sorts information som ska lagras i den.

// int är datatypen, hp namnet på variabeln
int hp = 100;          // int = heltal
string name = "Micke"; // string = text
float money = 4.5f     // float = decimaltal

Man kan ändra på en variabels värde i efterhand. = funkar alltid, så länge variabeln är på vänster sida och det du vill ändra dess värde till är på höger.

name = "Martin"; // Ändra name till 'Martin'

hp = hp + 10; // Öka hp med 10

hp += 5; // Öka hp med 5

hp++ // Öka hp med 1
hp-- // Minska hp med 1

Tryparse gör att man kan göra om en string till en int.

string pointsText = Console.ReadLine();
int points = 0;
bool success = int.TryParse(pointsText, out points);

If gör att man kan ha kod som bara görs om ett villkor stämmer (är true).

string name = Console.ReadLine();
if (name == "Micke")
{
  Console.WriteLine("Välkommen!");
}

I exemplet nedan används också else if och else för att skapa en kedja.

string name = Console.ReadLine();

if (name == "Micke") // Först kollas name mot 'Micke'
{
  Console.WriteLine("Välkommen!");
}
else if (name == "Martin")  // Om det inte är 'Micke' kollas namn mot 'Martin'
{
  Console.WriteLine("Hej!");
}
else  // och om det varken är 'Micke' eller 'Martin' körs den här koden
{
  Console.WriteLine("Dig känner jag inte, hejdå!");
}

Mellan parenteserna i if-satser och loopar skriver man någon form av jämförelse som blir sann eller falsk. Vanliga jämförelser kan vara:

  • == "Är exakt lika med"

  • != "Är inte lika med"

  • > "Är större än"

  • < "Är mindre än"

  • <= "Är större än eller lika med"

  • >= "Är mindre än eller lika med

int hp = 50;
if (hp < 10)
{
  Console.WriteLine("Skadad!");
}

if (hp > 100)
{
  Console.WriteLine("Overcharge!");
}

Man kombinerar ofta jämförelser med varandra, genom att använda && (och), || (eller).

if (name == "Mikael" && pass == "password" && attempts < 4)
{
  Console.WriteLine("Välkommen!");
}

// randomNumber blir ett tal som kan vara minst 0, max 99
int randomNumber = Random.Shared.Next(100);

int otherNumber = Random.Shared.Next(4,7); // Talet kan vara minst 4, max 7

Ett sätt att köra kod upprepade gånger.

while (true) // Loop som körs för evigt
{
  string password = Console.ReadLine();
  if (password == "12345")
  {
    break; // Avbryter loopen
  }
}

En while-loop funkar exakt som en if-sats, utom att när koden som står under den är klar, så gör den jämförelsen igen – och om den fortfarande är true så kör den en gång till.

string name = Console.ReadLine();
while (name != "Micke")
{
  name = Console.ReadLine()
}

Observera att exemplet ovan kan användas för alla möjliga jämförelser – så fort du vill begränsa användarens input, göra så att hen inte får gå vidare förrän hen skrivit in något som är "rätt sorts input", så kan du använda en while.

En sorts loop som är väldigt bra när man vill köra en loop ett specifikt antal gånger. For-loopar funkar egentligen som while-loopar, men inkluderar en räknare.

// Räknaren heter i, börjar på 0 och ökar med 1 varje gång loopen körts.
for (int i = 0; i < 10; i++) 
{
  // Det som står här inne kommer köras 10 gånger
  // Första gången loopen körs, har i värde 0
  // Andra gången har i värde 1
  // Tredje gången har i värde 2...
}

Med listor kan man ha flera värden i samma variabel.

List<int> numbers = [2, 45, 13, 200];
List<string> names = ["Micke", "Martin"];

Man kan läsa av och ändra på vad som finns på platser i en lista genom indexering. Varje plats i listan är numrerad från 0 och uppåt.

List<string> names = ["Micke", "Martin"];
Console.WriteLine(names[1]); // Skriver ut 'Martin'
names[0] = "Mohammad"; // Byter ut 'Micke' mot 'Mohammad'

Man kan också kolla hur lång en lista är med Count, lägga till saker med Add och ta bort med Remove eller RemoveAt.

List<string> names = ["Micke", "Martin"];
Console.WriteLine(names.Count); // Skriver ut '2'

names.Add("Jenny"); // Lägg till Jenny, som får index 2
names.Remove("Martin"); // Ta bort Martin, så att Jenny får index 1
names.RemoveAt(0); // Ta bort namnet med index 0

if (names.Contains("Jenny")) // Kolla om Jenny finns i listan
{
  Console.WriteLine("Jenny är med!");
}

Med en foreach-loop kan man gå igenom listan och läsa av varje sak i den i tur och ordning.

foreach (string name in names) // Loopa igenom listan
{
  Console.WriteLine(name);
}

En metod är en bit återanvändbar kod, som kan anropas från andra delar av koden. Metoder som är statiska är helt separata från resten av koden – de kan inte komma åt variabler som inte är deras egna. Metoder är överlag lite som Las Vegas: Det som händer i metoden stannar i metoden. Om man inte specifikt säger något annat.

static void CountDown()
{
  for (int i=10; i>0; i--)
  {
    Console.WriteLine(i + "...");
  }
}

Parametrar

För att få in data i en metod används parametrar. Det gör man generellt när man vill att en och samma metod ska kunna göra delvis olika saker beroende på vilken data den ges.

static void CountDownFrom(int startValue)
{
  for (int i=startValue; i>0; i--)
  {
    Console.WriteLine(i + "...");
  }
}

CountDownFrom(100); // 100 stoppas in i parametervariabeln startValue
CountDownFrom(10);

Returnering

Om man vill ta med sig något från inifrån en metod så använder man return.

// 'string' betyder att vi lovar att metoden returnerar en string
//        ↓
static string GetName() 
{
  string name = "";
  while (name.Length == 0)
  {
    Console.WriteLine("Vad heter du?");
    name = Console.ReadLine();
  }
  
  return name; // 'return' avslutar metoden och skickar tillbaka innehållet i 'name'
}

string heroName = GetName();
string enemyName = GetName();

Klasser

Varje klass läggs normalt i en egen fil.

Enemy.cs
class Enemy
{
  public string Name;
}

Last updated