# Static

Statiska variabler och metoder tillhör klassen istället för instanserna. Alla instanser delar alltså på en och samma variabel/metod.

## Statiska variabler

När man läser eller ändrar på en statisk variabel utifrån skriver man klassens namn, sedan en punkt och därefter variabelns namn. Inuti klassmetoder kan man alltid bara använda variabeln som vilken som helst.

{% code title="Fighter.cs" lineNumbers="true" %}

```csharp
class Fighter
{
  // En statisk slumpgenerator som alla fighters delar på
  static Random _generator = new Random();
  
  private int _strength;
  
  // En konstruktor där slumpgeneratorn används
  public Fighter()
  {
    _strength = _generator.Next(10,20);
  }
}
```

{% endcode %}

## Statiska metoder

När man anropar en statisk metod skriver man klassens namn, sedan en punkt och därefter metodens namn. Inuti icke-statiska klassmetoder kan man anropa statiska metoder som om de vore vanliga metoder.

{% hint style="info" %}
En viktig detalj är att **inuti en statisk metod** kan man **bara** anropa de metoder i samma klass som **också är statiska**. Detta eftersom metoden tillhör just klassen och inte instanserna. Detta gäller också variabler - i en statisk metod kan man bara använda statiska klassvariabler.
{% endhint %}

{% code title="Fighter.cs" lineNumbers="true" %}

```csharp
class Fighter
{
  public static string GetRandomFighterName()
  {
    /* ... */
  }
}
```

{% endcode %}


---

# 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/klasser-och-objektorientering/static.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.
