Wann man struct statt class in C# verwenden sollte: Werttypen und Referenztypen verstehen
Hallo zusammen! Ich schreibe seit etwa einem Jahr in C# und mich quält ständig die Frage: Wann sollte man struct und wann class verwenden? Ich verstehe zwar den Unterschied – struct ist ein Werttyp und class ein Referenztyp. Aber in der Praxis bin ich oft unsicher.
Zum Beispiel habe ich diesen Code:
```csharp
public class PointClass
{
public int X { get; set; }
public int Y { get; set; }
public PointClass(int x, int y) { X = x; Y = y; }
}
public struct PointStruct
{
public int X { get; set; }
public int Y { get; set; }
public PointStruct(int x, int y) { X = x; Y = y; }
}
```
Beide scheinen dasselbe zu tun. Aber ich habe gelesen, dass struct für kleine Objekte schneller ist, weil sie auf dem Stack gespeichert werden, während class auf dem Heap liegt. Andererseits habe ich gehört, dass man struct nicht mit Collections, LINQ oder Async verwenden sollte, weil sie dann ständig kopiert werden und die Performance leidet.
Außerdem verstehe ich nicht, warum man in struct keinen parameterlosen Konstruktor deklarieren kann.