# Struct

Structs är som klasser men skiljer sig på en viktig punkt: de är [value types snarare än reference types](/grundlaggande/reference-vs-value-types.md).

```csharp
Hero h1 = new() { Name = "A1" };
Hero h2 = h1; // h2 blir en KOPIA av h1, inte en pekare till samma objekt
h2.Name = "A2";

Console.WriteLine(h1.Name); // Så när namnet på h2 byts, så påverkas inte h1.
Console.WriteLine(h2.Name);

struct Hero
{
  public string Name;
}
```

Den generella regeln [som rekommenderas](https://learn.microsoft.com/en-us/dotnet/standard/design-guidelines/choosing-between-class-and-struct) i C# är:

* Klasser om du vill inkludera beteende eller ha innehåll som förändras (lätt att låta flera delar av programmet arbeta med samma objekt).
* Structs för små objekt, utan speciellt mycket beteende och med ganska oföränderlig data.

Arbetar man med structs finns risk att man använder mer minne – eftersom man gör kopior av structen varje gång den överförs någonstans.


---

# 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/struct.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.
