# 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)                 |                                                                                                                        |                                                                                               |


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://csharp.progdocs.se/readme.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
