# C# snabbreferens

Detta är en hemsida med förenklade förklaringar och exempel för C# och Visual Studio Code. Tanken är att den ska kunna användas som referensverk för gymnasieelever som läser kurserna **Programmering 1** och **Programmering 2**.

**Se även:**

* [Progdocs](https://app.gitbook.com/o/z5sgNMMcAnOUt1fqvUGW/s/t567cGmgFsbOXYO6QFYM/) – en portal med olika dokumentations-sajter som denna.
* [Unity](https://app.gitbook.com/o/z5sgNMMcAnOUt1fqvUGW/s/-MJTeBJlEweD3YcPwKkg/) – en sida med förenklade förklaringar och exempel för Unity och C#

## Vad behöver jag först?

* Installera [.NET SDK](https://csharp.progdocs.se/mjukvara/dotnet-sdk) – version 8 eller senare: <https://dotnet.microsoft.com/en-us/download>
* Installera [Visual Studio Code](https://csharp.progdocs.se/mjukvara/visual-studio-code)
  * Och lämpliga [extensions](https://csharp.progdocs.se/mjukvara/visual-studio-code/extensions).
  * Ställ in så program [körs i ett eget fönster](https://csharp.progdocs.se/mjukvara/visual-studio-code/instaellningar#kor-eller-debugga-i-separat-fonster)
* Installera [Git-scm](https://csharp.progdocs.se/mjukvara/git-and-github) och [ställ in namn och email](https://csharp.progdocs.se/mjukvara/git-and-github#forsta-gangen-efter-ny-git-installation).
* Kolla [lathunden ](https://csharp.progdocs.se/lathund-skapa-projekt)för hur man skapar nya projekt.

Det enklaste sättet att installera .NET SDK, Visual Studio Code och Git-scm är via **winget**. Öppna ett terminalfönster/kommandotolken och kör:

```powershell
winget install Microsoft.VisualStudioCode
winget install git.git
winget install Microsoft.DotNet.SDK.9
```

Winget bör finnas och fungera i Windows 10 och 11; använder du en äldre version av windows kanske du får installera manuellt istället. Det kan också vara bra att köra **Windows Update** först, och installera alla tillgängliga uppdateringar (inklusive de man bara får om man klickar "Sök online…"

{% hint style="info" %}
**TIPS:** winget kan användas för att installera [allt möjligt](https://winget.run/), och kan också hålla programmen uppdaterade.

Om du skriver <mark style="color:orange;">`winget upgrade`</mark> så får du en lista med program som kan uppdateras, och du kan då antingen skriva <mark style="color:orange;">`winget upgrade <namnet på programmet>`</mark> för att uppdatera ett specifikt program eller <mark style="color:orange;">`winget upgrade --all`</mark> för att uppdatera alla.
{% endhint %}

## Hittat ett fel?

Hela den här sidan finns [speglad på GitHub](https://github.com/krank/csharp-ref) – där kan du skapa en buggrapport (issue) och beskriva problemet.

Eller så kan du forka repositoriet, göra ändringen och sedan göra en pull request!

## Progression

Den här sidan är byggd för kurserna Programmering 1 och 2, och detta är den tänkta uppdelningen.

Vissa saker som t.ex. [Raylib ](https://csharp.progdocs.se/annat/raylib)ligger utanför tabellen – det är inte ett obligatoriskt moment i någon kurs men är heller inte riktigt "överkurs".

| Programmering 1                                                                                 | Programmering 2                                                                                                        | Överkurs                                                                                      |
| ----------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- |
| [Datatyper](https://csharp.progdocs.se/grundlaggande/datatyper)                                 | [Klasser och instanser](https://csharp.progdocs.se/klasser-och-objektorientering/klasser-och-instanser)                | [Delegates, events och lambdas](https://csharp.progdocs.se/grundlaggande/delegates)           |
| [Typkonvertering](https://csharp.progdocs.se/grundlaggande/typkonvertering)                     | [Public, private och protected](https://csharp.progdocs.se/klasser-och-objektorientering/public-private-och-protected) | [Reference vs value types](https://csharp.progdocs.se/grundlaggande/reference-vs-value-types) |
| [Operatorer](https://csharp.progdocs.se/grundlaggande/operatorer)                               | [Klassdiagram](https://csharp.progdocs.se/klasser-och-objektorientering/klassdiagram)                                  | [Abstract](https://csharp.progdocs.se/klasser-och-objektorientering/abstract)                 |
| [Konsolen](https://csharp.progdocs.se/grundlaggande/konsollen-console)                          | [Klassmetoder](https://csharp.progdocs.se/klasser-och-objektorientering/klassmetoder)                                  | [Interface](https://csharp.progdocs.se/klasser-och-objektorientering/interface)               |
| [If-satser](https://csharp.progdocs.se/grundlaggande/if-satser)                                 | [Konstruktorer](https://csharp.progdocs.se/klasser-och-objektorientering/kontruktorer)                                 | [Threading](https://csharp.progdocs.se/annat/threading)                                       |
| [Loopar](https://csharp.progdocs.se/grundlaggande/loopar)                                       | [Arv](https://csharp.progdocs.se/klasser-och-objektorientering/arv)                                                    |                                                                                               |
| [Listor och arrayer](https://csharp.progdocs.se/grundlaggande/listor-och-arrayer)               | [Inkapsling och properties](https://csharp.progdocs.se/klasser-och-objektorientering/inkapsling-och-properties)        |                                                                                               |
| [Slump](https://csharp.progdocs.se/grundlaggande/slump)                                         | [Static](https://csharp.progdocs.se/klasser-och-objektorientering/static)                                              |                                                                                               |
| [String-manipulering](https://csharp.progdocs.se/grundlaggande/datatyper/string#string-metoder) | [Polymorfism](https://csharp.progdocs.se/klasser-och-objektorientering/polymorfism)                                    |                                                                                               |
| [Egna metoder](https://csharp.progdocs.se/grundlaggande/metoder)                                | [Generiska klasser](https://csharp.progdocs.se/klasser-och-objektorientering/generiska-klasser)                        |                                                                                               |
| [Använda bibliotek](https://csharp.progdocs.se/grundlaggande/anvaenda-bibliotek-using)          | [Läsa och skriva](https://csharp.progdocs.se/filhantering/laesa-och-skriva)                                            |                                                                                               |
| [Namngivning](https://csharp.progdocs.se/grundlaggande/namngivning)                             | [Serialisering](https://csharp.progdocs.se/filhantering/serialisering)                                                 |                                                                                               |
| [Begrepp](https://csharp.progdocs.se/grundlaggande/begrepp)                                     | [Nätverk och internet](https://csharp.progdocs.se/annat/naetverk-och-internet)                                         |                                                                                               |
| [Pseudokod och diagram](https://csharp.progdocs.se/annat/pseudokod-och-diagram)                 |                                                                                                                        |                                                                                               |
